Ext.onReady(function()
{
    //Ext.BLANK_IMAGE_URL = '<{$FW->getBaseUrl()}>/js/ext/resources/images/default/s.gif';
    Ext.BLANK_IMAGE_URL = 'js/ext/resources/images/default/s.gif';
    Ext.ns('Ext.Cart');
    Ext.ns('Ext.app');

    Ext.QuickTips.init();
    //新規会員登録
    Ext.app.showSignUp = function(){
        //Callback
        var signUp = function(){
            Ext.getBody().mask('新規会員登録中....');
            Ext.Ajax.request({
                url:Ext.app.conf.USER_REGISTER_API,
                params:signUpValues,
                success:function(res,opt){
                    Ext.getBody().unmask();
                    var json = Ext.util.JSON.decode(res.responseText);
                    if (json.success) {
                        Ext.app.showRegister();
                    }else {
                        win.show();
                    }
                },
                failure:function(res,opt){
                    Ext.Msg.alert(
                        '新規登録エラー',
                        '新規登録に失敗しました。<br />ページを再読込して、登録をお願いします。').setIcon(Ext.Msg.ERROR);
                }
            });
        };

        var signUpValues = {};
        var north =  {
            region:'north',
            xtype:'box',
            height:110,
            style:{
                padding:'8px',
                'background-color':'#FFF',
                'text-align':'center'
            },
            autoEl:{
                cls:'login-window',
                //html:'既存の商品を検索して、編集中の商品情報に複写します。<br/> '
                children:[
                    {
                        tag:'img',
                        src:baseUrl + '/images/extwindow_head.png'
                    },
                    {
                        style:'text-align:center;',
                        children:[
                            {
                                tag:'p',
                                style:{
                                   'font-size':'14px',
                                   'padding':'5px',
                                   'font-weight':'bold',
                                   'text-align':'center'
                                },
                                html:'ローヤルゼリークラブ会員登録'
                            }
                        ]
                    }
                ]
            }
        };

        var win = new Ext.ExtendWindow({
            layout:'card',
            activeItem:0,
            title:'ローヤルゼリークラブ会員登録：' + Ext.app.conf.APPNAME,
            width:500,
            height:700,
            modal:true,
            defaults:{
                defaults:{
                    border:false,
                    bodyStyle:{
                        padding:'10px'
                    }
                }
            },
            items:[
                //基本情報の入力
                {
                    layout:'border', 
                    itemsId:'userinfo',
                    items:[
                        north,
                        {
                            region:'center',
                            xtype:'form',
                            itemId:'userform',
                            monitorValid:true,
                            autoScroll:true,
                            bodyCssClass:'stripe',
                            labelWidth:150,
                            defaults:{
                                xtype:'textfield',
                                allowBlank:false,
                                anchor:'90%',
                                msgTarget:'under'
                            },
                            items:[
                                {
                                    fieldLabel:'メールアドレス',
                                    vtype:'email',
                                    name:'cl_email'
                                },
                                {
                                    xtype:'displayfield',
                                    cls:'formcaption',
                                    value:'記入例：info@forabee.jp（半角英数字）'
                                },
                                {
                                    fieldLabel:'パスワード',
                                    inputType:'password',
                                    name:'cl_password'
                                },
                                {
                                    fieldLabel:'パスワード再入力',
                                    inputType:'password',
                                    name:'cl_repassword',
                                    listeners:{
                                        change:function(field,newVal,oldVal){
                                            var form = win.layout.activeItem.getComponent('userform').getForm();   
                                            var password = form.findField('cl_password');
                                            if (newVal != password.getValue()) {
                                                field.markInvalid('パスワードが一致しません');
                                            }
                                        }
                                    }
                                },
                                {
                                    fieldLabel:'名前',
                                    name:'cl_name'
                                },
                                {
                                    fieldLabel:'ふりがな',
                                    name:'cl_furi'
                                },
                                {
                                    name:'cl_postal',
                                    fieldLabel:'郵便番号',
                                    xtype:'postalfield',
                                    address1:'cl_address1',
                                    address2:'cl_address2',
                                    pref:'cl_pref',
                                    vtype:'postal',
                                    baseUrl:baseUrl + '/ecpack/data/postal/zip-{0}.json',
                                    anchor:false,
                                    width:120
                                },
                                {
                                    xtype:'displayfield',
                                    cls:'formcaption',
                                    value:'記入例：464-0071(半角英数字)'
                                },
                                {
                                    name:'cl_pref',
                                    anchor:false,
                                    width:120,
                                    allowBlank:this.type == 'search' ? true:false,
                                    addEmptyPref:this.type == 'search' ? true:false,
                                    blankText:'未入力',
                                    itemId:'pref',
                                    xtype:'preffield',
                                    editable:false,
                                    mode:'local',
                                    triggerAction:'all'
                                },
                                {
                                    name:'cl_address1',
                                    fieldLabel:'住所(市区町村)'
                                },
                                {
                                    xtype:'displayfield',
                                    cls:'formcaption',
                                    value:'記入例：名古屋市千種区'
                                },
                                {
                                    name:'cl_address2',
                                    cls:'formcaption',
                                    fieldLabel:'住所(番地、建物)',
                                    allowBlank:true
                                },
                                {
                                    xtype:'displayfield',
                                    cls:'formcaption',
                                    value:'記入例：若水三丁目28-11　ケイビルディング1F'
                                },
                                {
                                    name:'cl_tel',
                                    fieldLabel:'電話番号',
                                    vtype:'phone',
                                    anchor:false,
                                    width:180
                                },
                                {
                                    xtype:'displayfield',
                                    cls:'formcaption',
                                    value:'記入例：052-739-7654（半角数字）'
                                },
                                {
                                    xtype:'datefield',
                                    name:'cl_birthday',
                                    fieldLabel:'生年月日',
                                    format:'Y-m-d',
                                    editable:false,
                                    anchor:false,
                                    width:180
                                },
                                {
                                    xtype:'displayfield',
                                    cls:'formcaption',
                                    value:'日付を選択してください。'
                                }
                            ],
                            buttonAlign:'left',
                            buttons:[
                                {
                                    text:'登録をやめる',
                                    iconCls:'delete',
                                    handler:function(){
                                        win.close();
                                    }
                                },'->',
                                {
                                    formBind:true,
                                    text:'次へ',
                                    iconCls:'next',
                                    scope:this,
                                    handler:function(btn){
                                        var form = btn.findParentByType('form').getForm();
                                        
                                        var values = form.getValues();
                                        if (values.cl_password != values.cl_repassword) {
                                            form.findField('cl_password').markInvalid('パスワードが一致しません。');
                                            form.findField('cl_repassword').markInvalid('パスワードが一致しません。');
                                            return;
                                        }
                                        if (!values.cl_mlcheck) {
                                            values.cl_mlcheck = 0;
                                        } 
                                        Ext.apply(signUpValues,values);
                                        win.layout.setActiveItem(1);
                                    }
                                }
                            ]
                        }
                    ]
                },
                //確認ビュー
                {
                    layout:'border',
                    items:[
                        north,
                        {
                            region:'center',
                            xtype:'panel',
                            itemId:'confirm',
                            bodyCssClass:'stripe',
                            tpl:new Ext.XTemplate(
                                '<h3 style="font-weight:bold;font-size:large;">入力情報</h3>',
                                '<table class="client-info">',
                                    '<tr class="client-field">',
                                        '<th class="label">メールアドレス:</th>',
                                        '<td class="value">{cl_email}</td>',
                                    '</tr>',
                                    '<tr class="client-field">',
                                        '<th class="label">パスワード:</th>',
                                        '<td class="value">パスワードは表示されません</td>',
                                    '</tr>',
                                    '<tr class="client-field">',
                                        '<th class="label">名前:</th>',
                                        '<td class="value">{cl_name}</td>',
                                    '</tr>',
                                    '<tr class="client-field">',
                                        '<th class="label">ふりがな:</th>',
                                        '<td class="value">{cl_furi}</td>',
                                    '</tr>',
                                    '<tr class="client-field">',
                                        '<th class="label">電話番号:</th>',
                                        '<td class="value">{cl_tel}</td>',
                                    '</tr>',
                                    '<tr class="client-field">',
                                        '<th class="label">住所:</th>',
                                        '<td class="value">〒{cl_postal} <br />',
                                        '{cl_pref} {cl_address1} {cl_address2}</td>',
                                    '</tr>',
                                '</table>'
                            ),
                            html:'入力されていません。',
                            buttonAlign:'left',
                            buttons:[
                                '->',
                                {
                                    text:'戻る',
                                    iconCls:'back',
                                    handler:function(){
                                        win.layout.setActiveItem(1);
                                    }
                                },
                                {
                                    text:'登録する',
                                    iconCls:'signup',
                                    scope:this,
                                    handler:function(){
                                        signUp();
                                        win.close();
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        });
        
        win.show();
    };
    


    //ログインフォーム
    Ext.app.showLogin = function()
    {
        var win = new Ext.ExtendWindow({
            layout:'border',
            title:'ログイン：' + Ext.app.conf.APPNAME,
            width:450,
            height:465,
            modal:true,
            defaults:{
                border:false,
                bodyStyle:{
                    padding:'10px'
                }
            },
            items:[
                {
                    region:'north',
                    xtype:'box',
                    style:{
                        padding:'8px',
                        'background-color':'#FFF',
                        'text-align':'center'
                    },
                    autoScroll:false,
                    height:90,
                    autoEl:{
                        cls:'login-window',
                        //html:'既存の商品を検索して、編集中の商品情報に複写します。<br/> '
                        children:[
                            {
                                tag:'img',
                                src:baseUrl + '/images/extwindow_head.png'
                            }
                        ]
                    }
                },
                {
                    region:'center',
                    xtype:'form',
                    ref:'loginform',
                    itemId:'loginform',
                    url:Ext.app.conf.LOGIN_API,
                    monitorValid:true,
                    autoScroll:true,
                    defaults:{
                        xtype:'textfield',
                        allowBlank:false,
                        anchor:'90%',
                        msgTarget:'under'
                    },
                    bodyCssClass:'stripe',
                    items:[
                        {
                            hideLabel:true,
                            xtype:'displayfield',
                            //cls:'formcaption formcaption-top',
                            cls:'formcaption',
                            value:'<b>新規のご購入のお客様</b>：'
                        },
                        /*
                        {
                            xtype:'button',
                            scale:'large',
                            iconCls:'cart',
                            text:'ショッピングカートに進む',
                            handler:function(){
                                win.close();
                                Ext.Cart.show();
                            }
                        },
                        */
                        {   
                            xtype:'box',
                            autoEl: {
                                cn:[
                                    {
                                        id:'skipbtn',
                                        cls:'skipping',
                                        tag:'a',
                                        height:10,
                                        href:'javascript:void(0);',
                                        html:'&nbsp;'
                                    }
                                ]
                            },
                            listeners:{
                                scope:this,
                                render:function(cmp) {
                                    Ext.get('skipbtn').on('click',function(e,el,o){
                                        win.close();
                                        Ext.Cart.show();
                                    },this);
                                }
                            }
                        },
                        {
                            hideLabel:true,
                            xtype:'displayfield',
                            //cls:'formcaption',
                            cls:'formcaption formcaption-top',
                            value:'<b>ローヤルゼリークラブ会員のお客様</b>：<br/>登録されたIDとパスワードを入力してください。<br/>会員登録がお済みでない方は左下の「ユーザー登録」ボタンをクリックして会員登録にお進みください。'
                        },
                        {
                            hideLabel:true,
                            hidden:true,
                            ref:'msgfield',
                            style:'color:red',
                            xtype:'displayfield',
                            value:'ID又はパスワードが間違っています。'
                        },
                        {
                            fieldLabel:'ID',
                            name:'u_id',
                            vtype:'alphanum'
                            //fieldLabel:'メールアドレス',
                            //vtype:'email'
                        },
                        {
                            fieldLabel:'パスワード',
                            inputType:'password',
                            name:'u_password'
                        }
                    ],
                    buttonAlign:'left',
                    buttons:[
                        '->',
                        {
                            formBind:true,
                            text:'ログイン',
                            iconCls:'go',
                            scope:this,
                            handler:function(btn){
                                var form = btn.findParentByType('form').getForm();
                                form.submit({
                                    scope:this,
                                    success:function(form,res){
                                        var json = Ext.util.JSON.decode(res.response.responseText);
                                        if (json.success) {
                                            win.close();
                                            Ext.Cart.show();;
                                        }else{
                                        }
                                    },
                                    failure:function(form,res){
                                        
                                        Ext.Msg.alert('ログインエラー：',res.errmsg ? res.errmsg : 'ID又はパスワードが間違っています。').setIcon(Ext.Msg.ERROR);
                                        if (res.errmsg) {
                                            win.loginform.msgfield.setValue(res.errmsg);        
                                        }
                                        win.loginform.msgfield.show();        
                                    }
                                });
                            }
                        }
                    ]
                }
            ]
        });
        
        var mask = new Ext.LoadMask(Ext.getBody(),{
            msg:'ログイン状態を確認中',
            removeMask:true
        });
        mask.show();

        Ext.Ajax.request({
            url:Ext.app.conf.CHECK_LOGIN_API,
            success:function(res,opt){
                mask.hide();
                var json = Ext.util.JSON.decode(res.responseText);
                if (json.success) {
                    Ext.Cart.show();
                }else {
                    win.show();
                }
            },
            failure:function(res,opt){
                mask.hide();
            }
        });

    };
    
    
    
    Ext.Cart = new Ext.ElasticWindow({
        modal:true, closable:false, layout:'fit', height:700,
        width:710, title:'ショッピングカート',
        items:[ new Ext.app.ShopCart({ ref:'cart',listeners:{ cancel:function(){ Ext.Cart.hide(); } } }) ],
        listeners:{ 
            show:function(win){ 
                Ext.Cart.center(); 
                win.cart.getUserData();
            }
        }
    });
    Ext.Cart.shopCart = function(el){Ext.app.showLogin();};


});


