﻿// JavaScript Document
/// <reference path="jquery.js"/>
/*
* dragndrop
* version: 1.0.0 (05/13/2009)
* @ jQuery v1.2.*
*
* Licensed under the GPL:
*   http://gplv3.fsf.org
*
* Copyright 2008, 2009 Jericho [ thisnamemeansnothing[at]gmail.com ] 
*  usage:
*  
*/
(function($) {
    $.extend($.fn, {
        getCss: function(key) {
            var v = parseInt(this.css(key));
            if (isNaN(v))
                return false;
            return v;
        }
    });
    $.fn.Drags = function(opts) {
        var ps = $.extend({
            zIndex: 20,
            opacity: .7,
            handler: null,
            onMove: function() { },
            onDrop: function() { },
            range: ''
        }, opts);
        var dragndrop = {
            drag: function(e) {
                var dragData = e.data.dragData;
                var dx = dragData.left + e.pageX - dragData.offLeft;
                var dy = dragData.top + e.pageY - dragData.offTop;
                var r = dragData.newRange;
                if (typeof r == 'object')
                    dragData.target.css({
                        left: dx < r[3] ? r[3] : (dx > r[1] ? r[1] : dx),
                        top: dy < r[0] ? r[0] : (dy > r[2] ? r[2] : dy)
                        //left: dx,
                        //top: dy
                    });
                else if (r == '')
                    dragData.target.css({
                        left: dx,
                        top: dy
                    });
                dragData.target.css({
                    'opacity': ps.opacity,
                    'cursor': 'move'
                });
                dragData.onMove(e);
            },
            drop: function(e) {
                var dragData = e.data.dragData;
                dragData.target.css(dragData.oldCss); //.css({ 'opacity': '' });
                dragData.handler.css('cursor', dragData.oldCss.cursor);
                dragData.onDrop(e);
                $(document).unbind('mousemove', dragndrop.drag)
                    .unbind('mouseup', dragndrop.drop);
            }
        }

        return this.each(function() {
            var me = this;
            var handler = null;
            if (typeof ps.handler == 'undefined' || ps.handler == null)
                handler = $(me);
            else
                handler = (typeof ps.handler == 'string' ? $(ps.handler, this) : ps.handler);
            handler.bind('mousedown', { e: me }, function(s) {
                var target = $(s.data.e);
                var oldCss = {};
                if (target.css('position') != 'absolute') {
                    try {
                        target.position(oldCss);
                    } catch (ex) { }
                    target.css('position', 'absolute');
                }
                oldCss.cursor = target.css('cursor') || 'default';
                oldCss.opacity = target.getCss('opacity') || 1;
                var newRange = [];
                if (ps.range == 'window') {
                    newRange = [  // top, right, bottom, left
						$(window).scrollTop(),
						$(window).scrollLeft() + $(window).width() - target.outerWidth(),
						$(window).scrollTop() + $(window).height() - target.outerHeight(),
						$(window).scrollLeft()
					];
                }
                else if (ps.range == 'document') {
                    newRange = [
						0,
						$(document).width() - target.outerWidth(),
						$(document).height() - target.outerHeight(),
						0
					];
                } else if (typeof ps.range == 'object') {
                    newRange = [
						ps.range[0],
						ps.range[1] - target.outerWidth(),
						ps.range[2] - target.outerWidth(),
						ps.range[3]
					];
                } else newRange = ps.range;
                var dragData = {
                    left: oldCss.left || target.getCss('left') || 0,
                    top: oldCss.top || target.getCss('top') || 0,
                    width: target.width() || target.getCss('width'),
                    height: target.height() || target.getCss('height'),
                    offLeft: s.pageX,
                    offTop: s.pageY,
                    oldCss: oldCss,
                    onMove: ps.onMove,
                    onDrop: ps.onDrop,
                    handler: handler,
                    target: target,
                    newRange: newRange
                }

                target.css({
                    //'opacity': ps.opacity,
                    'cursor': 'move'
                });
                $(document).bind('mousemove', { dragData: dragData }, dragndrop.drag)
                   .bind('mouseup', { dragData: dragData }, dragndrop.drop);
            });
        });
    }
})(jQuery);



/**
*    jquery.msgbox 6.0 - 2010-05-12
*
*  Author: pwwang
*  Website: http://pwwang.com
*  Note: All the stuff written by pwwang
*        Feel free to do whatever you want with this file
*        Please keep the distribution
*
**/
(function($) {

    var $msgbox = function(o) {

        if (typeof (o) == 'string') { o = { content: { type: 'text', content: o}} }   // 如果参数给出字符串， 则直接进行提示（text）
        opts = o || {};                                                         // 用于接收参数

        opts.width = o.width || 360;                    // 提示框的宽度
        opts.height = o.height || 200,                    // 提示框的高度
        opts.autoClose = o.autoClose || 0;                      // 自动关闭的时间, 0则不会自动关闭
        opts.title = o.title || '提示',                 // 提示框标题
        opts.wrapperClass = o.wrapperClass || 'msgbox_wrapper';       // 提示框外框class
        opts.titleClass = o.titleClass || 'msgbox_title';         // 提示框标题class
        opts.closeClass = o.closeClass || 'msgbox_close';         // 提示框关闭按钮class
        opts.titleWrapperClass = o.titleWrapperClass || 'msgbox_title_wrapper'; // 提示框标题行class
        opts.mainClass = o.mainClass || 'msgbox_main';          // 内容框class
        opts.bgClass = o.bgClass || 'msgbox_bg';            // 背景层class
        opts.buttonClass = o.buttonClass || 'msgbox_button';        // 内容框中button的class
        opts.inputboxClass = o.inputboxClass || 'msgbox_inputbox';      // 内容框中input box的class
        opts.content = typeof o.content == 'string' ? { type: 'text', content: o.content} : (o.content || { type: 'text', content: '' });
        opts.content.type = o.content.type || 'text';
        opts.content.content = o.content.content || '';
        // support:  text, url(=get,ajax), iframe, confirm, alert; confirm, alert is added in version 4.0, input added in V5.0
        opts.onClose = o.onClose || function() { };           // 关闭时执行的事件 
        opts.closeIcon = typeof o.closeIcon == 'string' ? { type: 'string', content: o.closeIcon} : (o.closeIcon || { type: 'string', content: '×' });
        opts.closeIcon.type = o.closeIcon.type || 'string';
        opts.closeIcon.content = o.closeIcon.content || '×';
        opts.closeIcon.content = opts.closeIcon.type == 'icon' ? '<img src="' + opts.closeIcon.content + '" border="0" />' : opts.closeIcon.content;
        opts.bgOpacity = o.bgOpacity || 0.6;                    // from 0 to 1  背景透明度
        opts.onAjaxed = o.onAjaxed || function() { };           // ajax执行完之后的事件 
        opts.onInputed = o.onInputed || function() { };           // 输入框关闭后的事件
        opts.drag = typeof o.drag != 'boolean' ? true : o.drag; // 默认允许拖拽
        opts.animation = typeof o.animation != 'number' ? 1 : o.animation

        var returnValue = false;        // 返回值, 用于confirm和input
        var relTop = 0;            // 提示框离窗口上边的距离
        var relLeft = 0;            // 提示框离窗口左边的距离, 用于页面滚动时保持窗口不动

        var $background = $("<div>")
            .css({
                'position': 'absolute',
                'top': '0',
                'left': '0',
                'z-index': '9999',
                'opacity': '0'
            })
            .addClass(opts.bgClass)
            .dblclick(closeMe)          // 双击关闭提示框
            .click(function() {          // 单击闪烁提示框
                flashTitle(0.5, 4, 80);
            });

        var $wrapper = $("<div>")
            .css({
                'width': opts.width + 'px',
                'height': opts.height + 'px',
                'position': 'absolute',
                'z-index': '10000',
                'display': 'none'
            })
            .addClass(opts.wrapperClass)

        var $titleWrapper = $('<ul><li>提示</li><li>关闭</li></ul>')
            .addClass(opts.titleWrapperClass)
            .appendTo($wrapper);

        var $titleLi = $("li:first", $titleWrapper)
            .html(opts.title)
            .addClass(opts.titleClass);

        var $closeLi = $titleLi.next()
            .addClass(opts.closeClass)
            .html(opts.closeIcon.content)
            .mousedown(closeMe);

        var $main = $(document.createElement("div"))
            .addClass(opts.mainClass)
            .appendTo($wrapper);

        $main.height(opts.height - $titleWrapper.outerHeight(true) - $main.outerHeight(true) + $main.height()); // 计算内容框高度

        function animation(act, t) {
            switch (t) {
                case 1:
                    if (act == 'open') {
                        $background.animate({ 'opacity': opts.bgOpacity });
                        $wrapper.slideDown('slow');
                    } else {
                        $background.fadeOut('slow', $background.remove);
                        $wrapper.slideUp('slow', $wrapper.remove);
                    }
                    break;
                case 2:
                    if (act == 'open') {
                        $background.animate({ 'opacity': opts.bgOpacity });
                        $wrapper.animate({ 'width': 'toggle' }, 'slow', 'swing');
                    } else {
                        $background.fadeOut('slow', $background.remove);
                        $wrapper.animate({ 'width': 'toggle' }, 'slow', 'swing', $wrapper.remove);
                    }
                    break;
                case 3:
                    if (act == 'open') {
                        $background.animate({ 'opacity': opts.bgOpacity });
                        $wrapper.animate({ 'width': 'toggle', 'height': 'toggle' }, 'slow', 'swing');
                    } else {
                        $background.fadeOut('slow', $background.remove);
                        $wrapper.animate({ 'width': 'toggle', 'height': 'toggle' }, 'slow', 'swing', $wrapper.remove);
                    }
                    break;
                default:
                    if (act == 'open') {
                        $background.css('opacity', opts.bgOpacity);
                        $wrapper.css('display', '');
                    } else {
                        $background.remove();
                        $wrapper.remove();
                    }
            }
        }

        function closeMe() {
            animation('close', opts.animation);
            opts.onClose(returnValue);
        }

        function isVisible() {
            return $background.is(":visible") &&
                    $wrapper.is(":visible");
        }

        function autoCloseMe(autoClose) {
            if (autoClose > 0 && isVisible()) {  // 防止人为关闭后,计时器还在运行
                autoCloseStr = "<font>Auto-closed after " + autoClose + "s ...</font>";
                $titleLi.html(opts.title + " &nbsp; " + autoCloseStr);
                autoClose--;
                if (autoClose == 0)
                    closeMe();
                setTimeout(function() { autoCloseMe(autoClose) }, 1000);
            }
        }

        function resetPosition() {
            $background.css({
                'width': document.documentElement.scrollWidth + 'px',
                'height': document.documentElement.scrollHeight + 'px'
            });
            relLeft = ($(window).width() - opts.width) / 2;
            relTop = ($(window).height() - opts.height) / 2;
            fixBox();     // 定位初始位置
        }

        function flashTitle(opacity, times, interval, flag) { // 闪烁标题(模拟windows)
            if (times > 0) {
                flag = !flag;
                op = flag ? opacity : 1;
                $titleWrapper.css('opacity', op);
                setTimeout(function() { flashTitle(opacity, times - 1, interval, flag) }, interval);
            }
        }

        function fixBox() {  // 定位box
            $wrapper.css({
                'top': $(window).scrollTop() + relTop + 'px',
                'left': $(window).scrollLeft() + relLeft + 'px'
            });
        }

        function msgbox(ctt) {    // 按类型填充内容
            switch (ctt.type) {
                case 'input':
                    $main.html("<p>" + ctt.content + "</p>");
                    var $inputbox = $("<input type='text' />")
                        .appendTo($main)
                        .addClass(opts.inputboxClass);
                    var $buttonWrapper = $("<div>")
                        .css({
                            'text-align': 'center',
                            'padding': '15px 0'
                        })
                        .appendTo($main);
                    var $yesButton = $("<input type=button value=' 确定 '>")
                        .appendTo($buttonWrapper)
                        .addClass(opts.buttonClass)
                        .after(" &nbsp; &nbsp; ")
                        .click(function() {
                            opts.onInputed($inputbox.val());  // 返回输入的值
                            closeMe();
                        });
                    var $noButton = $("<input type=button value=' 取消 '>")
                        .appendTo($buttonWrapper)
                        .addClass(opts.buttonClass)
                        .click(closeMe);
                    break;
                case 'alert':
                    $main.html("<p>" + ctt.content + "</p>");
                    var $buttonWrapper = $("<div>")
                        .css({
                            'text-align': 'center',
                            'padding': '15px 0'
                        })
                        .appendTo($main);
                        var $OKButton = $("<input type=button value=' 确定 '>")
                        .appendTo($buttonWrapper)
                        .addClass(opts.buttonClass)
                        .click(closeMe);
                    break;
                case 'confirm':
                    $main.html("<p>" + ctt.content + "</p>");
                    var $buttonWrapper = $("<div>")
                        .css({
                            'text-align': 'center',
                            'padding': '15px 0'
                        })
                        .appendTo($main);
                    var $yesButton = $("<input type=button value=' 是 '>")
                        .appendTo($buttonWrapper)
                        .addClass(opts.buttonClass)
                        .after(" &nbsp; &nbsp; ")
                        .click(function() {
                            returnValue = true;
                            closeMe();
                        });
                    var $noButton = $("<input type=button value=' 否 '>")
                        .appendTo($buttonWrapper)
                        .addClass(opts.buttonClass)
                        .click(function() {
                            returnValue = false;
                            closeMe();
                        });
                    break;
                case 'get':
                case 'ajax':
                case 'url':
                    $main.html("Loading ...").load(
                        ctt.content,
                        function(data) {
                            (opts.onAjaxed)(data);
                        }
                    );
                    break;
                case 'iframe':
                    $("<iframe frameborder=0 marginheight=0 marginwidth=0></iframe>")
                        .appendTo($main)
                        .attr({
                            'width': '100%',
                            'height': '100%',
                            'scrolling': 'auto',
                            'src': ctt.content
                        });
                    break;
                default:
                    $main.html("<p>" + ctt.content + "</p>");
            }

        }

        function allowDrag(flag) {
            if (flag)
                $wrapper.Drags({  // 允许拖拽
                    handler: $titleWrapper,
                    onMove: function() { $(window).unbind('scroll') },
                    onDrop: function() {
                        relTop = $wrapper.getCss('top') - $(window).scrollTop();
                        relLeft = $wrapper.getCss('left') - $(window).scrollLeft();
                        $(window).scroll(fixBox);
                    }
                });
        }

        function showMe() {   // show the box

            $('body').append($background).append($wrapper);
            animation('open', opts.animation);

            resetPosition();

            $(window)
                .load(resetPosition)        // just in case user is changing size of page while loading
                .resize(resetPosition)
                .scroll(fixBox);

            msgbox(opts.content);    //填充内容

            if (opts.autoClose > 0)  // 自动关闭
                autoCloseMe(opts.autoClose);

            allowDrag(opts.drag);

        }

        showMe();

        // public properties and functions:  
        this.value = returnValue;
        this.close = closeMe;
        this.setAutoClose = function(v) { opts.autoClose = v; autoCloseMe(v); return this; }
        this.setHeight = function(v) { opts.height = v; $wrapper.css('height', v + 'px'); return this; }
        this.setWidth = function(v) { opts.width = v; $wrapper.css('width', v + 'px'); return this; }
        this.setTitle = function(v) { opts.title = v; $titleLi.html(v); return this; }
        this.setWrapperClass = function(v) { opts.wrapperClass = v; $wrapper.removeClass().addClass(v); return this; }
        this.setTitleClass = function(v) { opts.titleClass = v; $titleLi.removeClass().addClass(v); return this; }
        this.setCloseClass = function(v) { opts.closeClass = v; $closeLi.removeClass().addClass(v); return this; }
        this.setTitleWrapperClass = function(v) { opts.titleWrapperClass = v; $titleWrapper.removeClass().addClass(v); return this; }
        this.setMainClass = function(v) { opts.mainClass = v; $main.removeClass().addClass(v); return this; }
        this.setBgClass = function(v) { opts.bgClass = v; $background.removeClass().addClass(v); return this; }
        this.setButtonClass = function(v) { opts.buttonClass = v; $(":input(input[type=button], input[type=submit], input[type=reset])", $main).removeClass().addClass(v); return this; }
        this.setInputboxClass = function(v) { opts.inputboxClass = v; $("input[type=text]", $main).removeClass().addClass(v); return this; }
        this.setContent = function(v) {
            v = typeof v == 'string' ? { type: 'text', content: v} : v;
            v.type = v.type || 'text';
            v.content = v.content || opts.content.content || '';
            opts.content = v;
            msgbox(v);
            return this;
        }
        this.setBgOpacity = function(v) { opts.bgOpacity = v; $background.css('opacity', v); return this; }
        this.setOnClose = function(v) { opts.onClose = v; return this; }
        this.setOnAjaxed = function(v) { opts.onAjaxed = v; return this; }
        this.setOnInputed = function(v) { opts.onInputed = v; return this; }
        this.setAnimation = function(v) { opts.animation = v; return this; }
        this.setCloseIcon = function(v) {
            v = typeof v == 'string' ? { type: 'string', content: v} : v;
            v.type = v.type || 'string';
            v.content = v.content || '×';
            v.content = v.type == 'icon' ? '<img src="' + v.content + '" border="0" />' : v.content;
            opts.closeIcon = v;
            $closeLi.html(v.content);
            return this;
        }

    }

    $.msgbox = function(o) { return new $msgbox(o); }
    return $.msgbox;

})(jQuery);


var MsgBox = {
    height: 185,
    width: 300,
    title: '',
    content: '',
    autoClose: '',
    animation: '',
    drag: '',
    autoClose: '',
    alert: function(word) {
        $.msgbox({
            height: 185,
            width: 300,
            title: '提示：',
            content: { type: 'alert', content: word  }
        });
    },
    alertto: function(word, url) {
        $.msgbox({
            height: 185,
            width: 300,
            title: '提示：',
            content: { type: 'alert', content:  word  },
            onClose: function() {
                window.location.href =  url ;
            }
        });
    },
    succeed: function(word) {
        $.msgbox({
            height: 185,
            width: 300,
            title: '成功：',
            content: { type: 'alert', content: word  }
        });

    },
    confirm: function(word, yes, no) {
        $.msgbox({
            height: 185,
            width: 300,
            title: '确认？',
            content: { type: 'confirm', content:  word  },
            onClose: function(v) {
                if (v) { window.location.href =  yes ; }
                else {
                    if (no == '') {
                        return;
                    }
                    else {
                        window.location.href =  no ;
                    }
                }
            }
        });
    },
    warning: function(word) {
        $.msgbox({
            content: { type: 'alert', content:  word  },
            animation: 0, //禁止拖拽
            drag: false, //禁止动画
            autoClose: 10 //自动关闭
        });
    },
    iframe: function(url, titleword, iwidth, iheight) {
        $mb = $.msgbox({
            height: iheight,
            width: iwidth,
            content: { type: 'iframe', content:  url  },
            title:  titleword ,
            closeIcon: { type: 'icon', content: '/js/Plugin/close.gif' }
        });
    }
};
/* 彦磊基于jQuery省市县联动插件(2009.04)
*/

(function($) {
    $.fn.jChinaArea = function(o) {
        o = $.extend({
            aspnet: false,
            s1: null,
            s2: null,
            s3: null
        }, o || {});
        var wrap = $(this);
        var sel = $("select", wrap);
        var sProvince = sel.eq(0);
        var sCity = sel.eq(1);
        var sCounty = sel.eq(2);
        var loc = new Location();

        sProvince.empty();
        sCity.empty();
        sCounty.empty();
        loc.fillOption(sProvince, '0', o.s1);
        loc.fillOption(sCity, '0,' + sProvince.val(), o.s2);
        loc.fillOption(sCounty, '0,' + sProvince.val() + ',' + sCity.val(), o.s3);

        if (o.aspnet) {
            var input = $("input", wrap);
            var tProvince = input.eq(0);
            var tCity = input.eq(1);
            var tCounty = input.eq(2);
            writeInput();
        }

        sProvince.change(function() {
            sCity.empty();
            loc.fillOption(sCity, '0,' + sProvince.val());
            sCounty.empty();
            loc.fillOption(sCounty, '0,' + sProvince.val() + ',' + sCity.val());
            if (o.aspnet) {
                writeInput();
            }
        })

        sCity.change(function() {
            sCounty.empty();
            loc.fillOption(sCounty, '0,' + sProvince.val() + ',' + sCity.val());
            if (o.aspnet) {
                writeInput();
            }
        })
        sCounty.change(function() {
            if (o.aspnet) {
                writeInput();
            }
        })

        function writeInput() {
            tProvince.val($(":selected", sProvince).text());
            tCity.val($(":selected", sCity).text());
            tCounty.val($(":selected", sCounty).text());
        }
    };

})(jQuery);


(function($) {  // 滚动插件代码
    $.fn.scroll = function(options) {
        options = options || {};
        this.css('overflow', 'hidden');
        var scroll = (function(self) {
            return function() {
                if (self.data('scroll_stop')) {
                    return;
                }
                var li = self.find('li:first');
                var t = parseInt(li.css('marginTop')) || 0;
                li.animate({
                    'marginTop': (t - li.outerHeight()) + 'px'
                }, options.speed || 'slow', function() {
                    self.append(li);
                    li.css('marginTop', t + 'px');
                });
            };
        })(this);
        setInterval(scroll, options.delay || 2000);
        this.hover(function() {
            $(this).data('scroll_stop', true);
        }, function() {
            $(this).removeData('scroll_stop');
        });
    };
})(jQuery);



/**
* jQuery.jSelectDate Version 0.2
* jQuery 下拉列表选择日期插件
*
* Wathon Team
* http://www.wathon.com
* http://huacn.cnblogs.com
* http://www.cnblogs.com/huacn/archive/2008/01/16/jquery_plugin_jSelectDate.html
* 
* created by:
* 李华顺 没剑
*/
/*
* *****************   Example   ***********************
<script type="text/javascript">
$("body").ready(function(){
$("input.date").jSelectDate({
css:"date",
yearBeign: 1995,
disabled : true
});
})
</script>
 
 
<body>
<input type="text" id="txtName" class="date" value="2005-3-22" />
<input type="text" id="txtDate2" class="date" value="1995-5-2" />
</body>
 
* ****************  End Example  **********************
*/
var jSelectDate = {


    /**
    * 选项设置
    */
    settings: {
        css: "date",
        borderCss: "date",
        disabled: false,
        yearBegin: 1960,
        yearEnd: 2008,
        isShowLabel: true
    },



    /**
    * 初始化对向
    * @param {Object} el 用于存放日期结果的文本框 jQuery DOM
    */
    init: function(els) {

        els.each(function() {


            var el = $(this);

            /* 取得旧的日期 */
            var elValue = el.val();
            elDate = new Date(elValue.split("-").join("/"));

            var nYear = elDate.getFullYear();
            var nMonth = jSelectDate.returnMonth(elDate.getMonth());
            var nDay = elDate.getDate();


            /* 隐藏给出的对向 */
            el.hide();

            /* 先算出当前共有多少个jSelectDate */
            var currentIdx = $("jSelectDateBorder").length + 1;

            /* 加入控件到文本框的位置 */
            var spanDate = document.createElement("span");
            spanDate.id = "spanDate" + currentIdx;
            spanDate.className = "jSelectDateBorder " + jSelectDate.settings.borderCss;
            spanDate.disabled = jSelectDate.settings.disabled;

            el.after(spanDate);

            /* 创建年 */
            var selYear = document.createElement("select");
            selYear.id = "selYear" + currentIdx
            selYear.className = jSelectDate.settings.css;
            selYear.disabled = jSelectDate.settings.disabled;

            /* 加入选项 */
            for (var i = jSelectDate.settings.yearBegin; i <= jSelectDate.settings.yearEnd; i++) {

                var option = document.createElement("option");
                option.value = i;
                option.innerHTML = i;

                /* 判断是否有旧的值，如果有就选中 */
                if (!isNaN(nYear)) {
                    if (i == nYear) {
                        option.selected = true;
                    }
                }
                if (i % 10 == 9) {
                    var optiongroup = document.createElement("optgroup");
                    optiongroup.value = i + "~" + (i + 10);
                    selYear.appendChild(optiongroup);
                }
                selYear.appendChild(option);
                option = null;

            }

            $(spanDate).append(selYear);

            /* 创建月 */
            var selMonth = document.createElement("select");
            selMonth.id = "selMonth" + currentIdx
            selMonth.className = jSelectDate.settings.css;
            selMonth.disabled = jSelectDate.settings.disabled;
            /* 加入选项 */
            for (var i = 1; i <= 12; i++) {
                var option = document.createElement("option");
                option.value = i;
                option.innerHTML = i;

                /* 判断是否有旧的值，如果有就选中 */
                if (!isNaN(nMonth)) {
                    if (i == nMonth) {
                        option.selected = true;
                    }
                }

                selMonth.appendChild(option);
                option = null;
            }
            /* 加入控件到文本框的位置 */
            $(selYear).after(selMonth);


            /* 创建日 */
            var selDay = document.createElement("select");
            selDay.id = "selDay" + currentIdx
            selDay.className = jSelectDate.settings.css;
            selDay.disabled = jSelectDate.settings.disabled;

            /* 算出最大的天数 */
            var maxDayNum = 30;
            if (nMonth == 2) {
                if (jSelectDate.isLeapYear(nYear)) {
                    maxDayNum = 29;
                }
                else {
                    maxDayNum = 28;
                }
            }
            else if (jSelectDate.isLargeMonth(nMonth)) {
                maxDayNum = 31;
            }

            /* 加入选项 */
            for (var i = 1; i <= maxDayNum; i++) {

                var option = document.createElement("option");
                option.value = i;
                option.innerHTML = i;

                /* 判断是否有旧的值，如果有就选中 */
                if (!isNaN(nDay)) {
                    if (i == nDay) {
                        option.selected = true;
                    }
                }

                selDay.appendChild(option);
                option = null;
            }
            /* 加入控件到文本框的位置 */
            $(selMonth).after(selDay);

            if (jSelectDate.settings.isShowLabel) {
                $(selMonth).before("年 ");
                $(selDay).before("月 ");
                $(selDay).after("日");
            } else {
                $(selMonth).before(" ");
                $(selDay).before(" ");
            }

            /* 返回当前选择的日期 */
            var getDate = function() {
                var year = $(selYear).val();
                var month = $(selMonth).val();
                var day = $(selDay).val();
                el.val(year + "-" + month + "-" + day);
            }


            /**
            * 给几个下拉列表加入更改后的事件
            */
            $(selDay).change(function() {
                return getDate();
            });
            $(selMonth).change(function() {

                jSelectDate.progressDaySize(this, true);

                /* 更新文本框中的日期 */
                return getDate();
            });
            $(selYear).change(function() {
                jSelectDate.progressDaySize(this, false);
                return getDate();
            });

        })


    },

    /**
    * 判断是否闰年
    * @param {Object} year
    * @author 没剑 http://regedit.cnblogs.com
    */
    isLeapYear: function(year) {
        return (0 == year % 4 && ((year % 100 != 0) || (year % 400 == 0)));
    },

    /**
    * 判断是否是大月
    * @param {Object} monthNum
    */
    isLargeMonth: function(monthNum) {
        var largeArray = [true, false, true, false, true, false, true, true, false, true, false, true];
        return largeArray[monthNum - 1];
    },

    returnMonth: function(num) {
        var arr = new Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12");
        return arr[num];
    },

    /**
    * 创建一个Option对象
    * @param {Object} value 值
    * @param {Object} text 文本
    */
    createOption: function(value, text) {
        var option = document.createElement("option");
        option.value = value;
        option.innerHTML = text;
        return option;
    },

    /**
    * 处理天数
    * @param {Object} el 下拉列表对像
    * @param {Object} isMonth 是否是月的下拉列表 或者就处理 年的下拉列表
    */
    progressDaySize: function(el, isMonth) {
        if (isMonth == true) {
            /* 选择月时处理大月、小月和二月的情况 */
            var month = $(el).val();
            var year = $($("select", $(el).parent())[0]).val()
            var selDay = $($("select", $(el).parent())[2]);
            if (month == 2) {

                /* 2月处理 */
                $("option:contains('31')", selDay).remove();
                $("option:contains('30')", selDay).remove();

                /* 闰年处理 */
                if (!jSelectDate.isLeapYear(year)) {
                    $("option:contains('29')", selDay).remove();
                }
                else {

                    if ($("option:contains('29')", selDay).length == 0) {
                        selDay.append(jSelectDate.createOption(29, 29));
                    }
                }
            }
            else
                if (!jSelectDate.isLargeMonth(month)) {

                /* 小月处理 */
                if ($("option:contains('30')", selDay).length == 0) {
                    selDay.append(jSelectDate.createOption(30, 30));
                }

                $("option:contains('31')", selDay).remove();
            }
            else {

                /* 大月处理 */
                if ($("option:contains('30')", selDay).length == 0) {
                    selDay.append(jSelectDate.createOption(30, 30));
                }

                if ($("option:contains('31')", selDay).length == 0) {
                    selDay.append(jSelectDate.createOption(31, 31));
                }
            }
        }
        else {
            /* 处理闰年的二月问题 */
            var panelDate = $(el).parent();
            var year = $(el).val();
            var month = $($("select", panelDate)[1]).val()
            var selDay = $($("select", panelDate)[2]);
            if (month == 2) {
                $("option:contains('31')", selDay).remove();
                $("option:contains('30')", selDay).remove();
                if (!jSelectDate.isLeapYear(year)) {
                    $("option:contains('29')", selDay).remove();
                }
                else {

                    if ($("option:contains('29')", selDay).length == 0) {
                        selDay.append(jSelectDate.createOption(29, 29));
                    }
                }
            }

        }
    }

}

jQuery.fn.jSelectDate = function(settings) {

    var getNowYear = function() {
        /* 得到现在的年 */
        var date = new Date();
        return date.getFullYear();
    }

    jSelectDate.settings.yearEnd = getNowYear();

    $.extend(jSelectDate.settings, settings);


    jSelectDate.init($(this));

    return $(this);

}
