/**
 * 降价提醒相关接口
 * 目前只做了修改邮箱；删除订阅
 * TODO：
 *     修改单个订阅设置；
 *     增加订阅
 */
define(function (require, exports, module) {
    'use strict';
    var dr = module.exports;
    var Box = require('./popout/index.js');

    // 邮箱设置弹框
    var settingEmailBox;
    var settingBoxID = 'settingEmail';
    var msg = require('./msg.js');

    var URL_BASE = 'http://zhushou.huihui.cn/api/';
    var apis = {
        setEmail : 'pricehub/setemail',
        cancelItem : 'pricehub/del',
        cancelItems : 'pricehub/del_subs'
    };

    var EMAIL_REG = /^([a-zA-Z0-9_-]|\.)+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,5}){1,4})$/;


    /**
     * 发送请求
     * @param  {[type]} type   setEmail | cancelItem
     * @param  {[type]} params [description]
     */
    var _sendRequest = function (type, params, callback) {
        var url;
        var api = apis[type];
        var paramstring = '';
        _.each(params, function (value, key) {
            paramstring += key + '=' + value + '&';
        });

        // 加时间戳
        paramstring += 't=' + (new Date().getTime()) + '&';

        paramstring = paramstring.slice(0, paramstring.length - 1);
        url = URL_BASE + api + '?' + paramstring;
        $.ajax({
            url : url,
            dataType : 'json'
        }).done(function (res) {
            if (_.isFunction(callback)) {
                callback(res);
            }
        }).fail(function (err) {
            console.log(url, err, 'fail');
        });
    };

    // 修改订阅邮箱的内部模板
    var tmplString = [
    '<div id="modifyEmail">',
        '<label for="depricedEmailInput">修改邮箱：</label>',
        '<input type="text" id="depricedEmailInput" name="depricedEmailInput" value="' + '<%=local.email%>' + '"/>',
        '<p class="error">*请填写正确的邮箱地址</p>',
    '</div>'
    ].join('');
    var emailInputTmpl = _.template(tmplString);

    /**
     * 修改订阅邮箱
     */
    dr.modifyEmail = function (originalEmail) {
        if (settingEmailBox !== undefined) {
            if ($('#' + settingBoxID + ':visible').length !== 0) {
                // 已经弹出
                return;
            }
            // 更新内容
            settingEmailBox.updateContent(emailInputTmpl({
                local : {
                    email : originalEmail
                }
            }));

            settingEmailBox.show();
        } else {
            // 首次弹出该窗口
            // 进行创建&渲染
            settingEmailBox = new Box({
                'containerId' : settingBoxID,
                'title' : '设置接收邮箱',
                'contentsHtmlString' : emailInputTmpl({
                    local : {
                        email : originalEmail
                    }
                })
            }, {
                'click .pop-out-btn-confirm' : function () {
                    // 提交修改
                    var email = $('#depricedEmailInput').val().replace(/\s/g, '');
                    if (email !== "" && EMAIL_REG.test(email)) {
                        // 验证通过
                        _sendRequest('setEmail', {
                            email : email
                        });
                        msg.fire('setEmailData', email);
                        settingEmailBox.hide();
                    } else {
                        settingEmailBox.$box.find('.error').show();
                    }

                }
            });
        }
    };

    /**
     * 取消订阅
     */
    dr.cancelSubscribtion = function (subscriptionData, callback) {
        var needLogin = true;
        var email = $('.modify-depriced-reminder-email').data('email');

        var sd = subscriptionData;
        _sendRequest('cancelItem', {
            email : email,
            nl : needLogin,

            id : sd.id,
            cluster : sd.iscluster
        }, function (res) {
            // 取消订阅成功
            if(_.isFunction(callback)) {
                callback(res);
            }
        });
    };

    /**
     * 批量取消订阅
     * @param  {[type]}   itemId     单品id 用逗号隔开
     * @param  {[type]}   clusterIds 聚类id 用逗号隔开
     * @param  {Function} callback   [description]
     */
    dr.cancelBundledSubcribtion = function (itemIds, clusterIds, callback) {

        _sendRequest('cancelItems', {
            itemIds : itemIds.join(','),
            clusterIds : clusterIds.join(',')
        }, function (res) {
            callback(res);
        });
    };

    /**
     * 修改单个订阅
     */
    dr.modifyDetail = function () {

    };



});