`
sigh0829
  • 浏览: 5125 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
jquery.dragAndDrop.js
(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() { }
        }, opts);
        var dragndrop = {
            drag: function(e) {
                var dragData = e.data.dragData;
                dragData.target.css({
                    left: dragData.left + e.pageX - dragData.offLeft,
                    top: dragData.top + e.pageY - dragData.offTop
                });
                dragData.handler.css({ 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);
                $().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.handle);
            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 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
                }
                target.css('opacity', ps.opacity);
                $().bind('mousemove', { dragData: dragData }, dragndrop.drag)
                    .bind('mouseup', { dragData: dragData }, dragndrop.drop);
            });
        });
    }
})(jQuery); 
jquery.resize.js
(function($) {
    $.extend($.fn, {
        getCss: function(key) {
            var v = parseInt(this.css(key));
            if (isNaN(v))
                return false;
            return v;
        }
    });
    $.fn.resizable = function(opts) {
        var ps = $.extend({
            handler: null,
            min: { width: 0, height: 0 },
            max: { width: $(document).width(), height: $(document).height() },
            onResize: function() { },
            onStop: function() { }
        }, opts);
        var resize = {
            resize: function(e) {
                var resizeData = e.data.resizeData;

                var w = Math.min(Math.max(e.pageX - resizeData.offLeft + resizeData.width, resizeData.min.width), ps.max.width);
                var h = Math.min(Math.max(e.pageY - resizeData.offTop + resizeData.height, resizeData.min.height), ps.max.height);
                resizeData.target.css({
                    width: w,
                    height: h
                });
                resizeData.onResize(e);
            },
            stop: function(e) {
                e.data.resizeData.onStop(e);

                document.body.onselectstart = function() { return true; }
                e.data.resizeData.target.css('-moz-user-select', '');

                $().unbind('mousemove', resize.resize)
                    .unbind('mouseup', resize.stop);
            }
        }
        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.handle);
            handler.bind('mousedown', { e: me }, function(s) {
                var target = $(s.data.e);
                var resizeData = {
                    width: target.width() || target.getCss('width'),
                    height: target.height() || target.getCss('height'),
                    offLeft: s.pageX,
                    offTop: s.pageY,
                    onResize: ps.onResize,
                    onStop: ps.onStop,
                    target: target,
                    min: ps.min,
                    max: ps.max
                }

                document.body.onselectstart = function() { return false; }
                target.css('-moz-user-select', 'none');

                $().bind('mousemove', { resizeData: resizeData }, resize.resize)
                    .bind('mouseup', { resizeData: resizeData }, resize.stop);
            });
        });
    }
})(jQuery); 
jquery.jFormer.js
/*
 * jFormer JavaScript Library v1.4.4
 * http://jFormer.com/
 *
 * Copyright 2011, Kirk Ouimet, Seth Zander Jensen
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jFormer.com/download#license
 *
 * Date: Mon Jan 10 2011
 */

// Simple class creation and inheritance
// Inspired by base2 and Prototype
(function(){
    var initializing = false, fnTest = /xyz/.test(function(){
        xyz;
    }) ? /\b_super\b/ : /.*/;

    // The base Class implementation (does nothing)
    this.Class = function(){};

    // Create a new Class that inherits from this class
    Class.extend = function(prop) {
        var _super = this.prototype;

        // Instantiate a base class (but only create the instance,
        // don't run the init constructor)
        initializing = true;
        var prototype = new this();
        initializing = false;

        // Copy the properties over onto the new prototype
        for (var name in prop) {
            // Check if we're overwriting an existing function
            prototype[name] = typeof prop[name] == "function" &&
            typeof _super[name] == "function" && fnTest.test(prop[name]) ?
            (function(name, fn){
                return function() {
                    var tmp = this._super;

                    // Add a new ._super() method that is the same method
                    // but on the super-class
                    this._super = _super[name];

                    // The method only need to be bound temporarily, so we
                    // remove it when we're done executing
                    var ret = fn.apply(this, arguments);
                    this._super = tmp;

                    return ret;
                };
            })(name, prop[name]) :
            prop[name];
        }

        // The dummy class constructor
        function Class() {
            // All construction is actually done in the init method
            if ( !initializing && this.init )
                this.init.apply(this, arguments);
        }

        // Populate our constructed prototype object
        Class.prototype = prototype;

        // Enforce the constructor to be what we expect
        Class.constructor = Class;

        // And make this class extendable
        Class.extend = arguments.callee;

        return Class;
    };
})();

/*
Date Input 1.2.1
Requires jQuery version: >= 1.2.6

Copyright (c) 2007-2008 Jonathan Leighton & Torchbox Ltd

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/

DateInput = (function($) {

    function DateInput(element, options) {
        if (typeof(opts) != "object") options = {};
        $.extend(this, DateInput.DEFAULT_OPTS, options);

        var button = $('<span class="jFormComponentDateButton">Find Date</span>');

        this.input = $(element);
        this.input.after(button);
        this.button = $(element).parent().find('span.jFormComponentDateButton');
        this.bindMethodsToObj("show", "hide", "hideIfClickOutside", "keydownHandler", "selectDate");

        this.build();
        this.selectDate();
        this.hide();
    };
    DateInput.DEFAULT_OPTS = {
        jFormComponentDateSelectorMonthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
        short_jFormComponentDateSelectorMonthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
        short_day_names: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
        start_of_week: 0
    };
    DateInput.prototype = {
        build: function() {
            var monthNav = $('<p class="jFormComponentDateSelectorMonthNavigator">' +
                '<span class="jFormComponentDateSelectorButton jFormComponentDateSelectorPrevious" title="[Page-Up]">«</span>' +
                ' <span class="jFormComponentDateSelectorMonthName"></span> ' +
                '<span class="jFormComponentDateSelectorButton jFormComponentDateSelectorNext" title="[Page-Down]">»</span>' +
                '</p>');
            this.monthNameSpan = $(".jFormComponentDateSelectorMonthName", monthNav);
            $(".jFormComponentDateSelectorPrevious", monthNav).click(this.bindToObj(function() {
                this.moveMonthBy(-1);
            }));
            $(".jFormComponentDateSelectorNext", monthNav).click(this.bindToObj(function() {
                this.moveMonthBy(1);
            }));

            var yearNav = $('<p class="jFormComponentDateSelectorYearNavigator">' +
                '<span class="jFormComponentDateSelectorButton jFormComponentDateSelectorPrevious" title="[Ctrl+Page-Up]">«</span>' +
                ' <span class="jFormComponentDateSelectorYearName"></span> ' +
                '<span class="jFormComponentDateSelectorButton jFormComponentDateSelectorNext" title="[Ctrl+Page-Down]">»</span>' +
                '</p>');
            this.yearNameSpan = $(".jFormComponentDateSelectorYearName", yearNav);
            $(".jFormComponentDateSelectorPrevious", yearNav).click(this.bindToObj(function() {
                this.moveMonthBy(-12);
            }));
            $(".jFormComponentDateSelectorNext", yearNav).click(this.bindToObj(function() {
                this.moveMonthBy(12);
            }));

            var nav = $('<div class="jFormComponentDateSelectorNavigator"></div>').append(monthNav, yearNav);

            var tableShell = "<table><thead><tr>";
            $(this.adjustDays(this.short_day_names)).each(function() {
                tableShell += "<th>" + this + "</th>";
            });
            tableShell += "</tr></thead><tbody></tbody></table>";

            this.dateSelector = this.rootLayers = $('<div class="jFormComponentDateSelector"></div>').append(nav, tableShell).insertAfter(this.input);

            if ($.browser.msie && $.browser.version < 7) {

                this.ieframe = $('<iframe class="jFormComponentDateSelectorIEFrame" frameborder="0" src="#"></iframe>').insertBefore(this.dateSelector);
                this.rootLayers = this.rootLayers.add(this.ieframe);

                $(".jFormComponentDateSelectorButton", nav).mouseover(function() {
                    $(this).addClass("hover")
                });
                $(".jFormComponentDateSelectorButton", nav).mouseout(function() {
                    $(this).removeClass("hover")
                });
            };

            this.tbody = $("tbody", this.dateSelector);

            this.input.change(this.bindToObj(function() {
                this.selectDate();
            }));
            this.selectDate();
        },

        selectMonth: function(date) {
            var newMonth = new Date(date.getFullYear(), date.getMonth(), 1);

            if (!this.currentMonth || !(this.currentMonth.getFullYear() == newMonth.getFullYear() &&
                this.currentMonth.getMonth() == newMonth.getMonth())) {

                this.currentMonth = newMonth;

                var rangeStart = this.rangeStart(date), rangeEnd = this.rangeEnd(date);
                var numDays = this.daysBetween(rangeStart, rangeEnd);
                var dayCells = "";

                for (var i = 0; i <= numDays; i++) {
                    var currentDay = new Date(rangeStart.getFullYear(), rangeStart.getMonth(), rangeStart.getDate() + i, 12, 00);

                    if (this.isFirstDayOfWeek(currentDay)) dayCells += "<tr>";

                    if (currentDay.getMonth() == date.getMonth()) {
                        dayCells += '<td class="jFormComponentDateSelectorSelectedDay" date="' + this.dateToString(currentDay) + '">' + currentDay.getDate() + '</td>';
                    } else {
                        dayCells += '<td class="jFormComponentDateSelectorUnselectedMonth" date="' + this.dateToString(currentDay) + '">' + currentDay.getDate() + '</td>';
                    };

                    if (this.isLastDayOfWeek(currentDay)) dayCells += "</tr>";
                };
                this.tbody.empty().append(dayCells);

                this.monthNameSpan.empty().append(this.monthName(date));
                this.yearNameSpan.empty().append(this.currentMonth.getFullYear());

                $(".jFormComponentDateSelectorSelectedDay", this.tbody).click(this.bindToObj(function(event) {
                    this.changeInput($(event.target).attr("date"));
                }));

                $("td[date=" + this.dateToString(new Date()) + "]", this.tbody).addClass("jFormComponentDateSelectorToday");

                $("td.jFormComponentDateSelectorSelectedDay", this.tbody).mouseover(function() {
                    $(this).addClass("hover")
                });
                $("td.jFormComponentDateSelectorSelectedDay", this.tbody).mouseout(function() {
                    $(this).removeClass("hover")
                });
            };

            $('.jFormComponentDateSelectorSelected', this.tbody).removeClass("jFormComponentDateSelectorSelected");
            $('td[date=' + this.selectedDateString + ']', this.tbody).addClass("jFormComponentDateSelectorSelected");
        },

        selectDate: function(date) {
            if (typeof(date) == "undefined") {
                date = this.stringToDate(this.input.val());
            };
            if (!date) date = new Date();

            this.selectedDate = date;
            this.selectedDateString = this.dateToString(this.selectedDate);
            this.selectMonth(this.selectedDate);
        },

        changeInput: function(dateString) {
            this.input.val(dateString).change();
            this.hide();
        },

        show: function() {
            this.rootLayers.css("display", "block");
            this.button.unbind("click", this.show);
            this.input.unbind("focus", this.show);
            $(document.body).keydown(this.keydownHandler);
            $([window, document.body]).click(this.hideIfClickOutside);
            this.setPosition();
        },

        hide: function() {
            this.rootLayers.css("display", "none");
            $([window, document.body]).unbind("click", this.hideIfClickOutside);
            this.button.click(this.show);
            this.input.focus(this.show);
            $(document.body).unbind("keydown", this.keydownHandler);
        },

        hideIfClickOutside: function(event) {
            if (event.target != this.input[0] && event.target != this.button[0] && !this.insideSelector(event)) {
                this.hide();
            };
        },

        insideSelector: function(event) {
            var offset = this.dateSelector.offset();
            offset.right = offset.left + this.dateSelector.outerWidth();
            offset.bottom = offset.top + this.dateSelector.outerHeight();


            return event.pageY < offset.bottom &&
            event.pageY > offset.top &&
            event.pageX < offset.right &&
            event.pageX > offset.left;
        },

        keydownHandler: function(event) {
            switch (event.keyCode)
            {
                case 9:
                case 27:
                    this.hide();
                    return;
                    break;
                case 13:
                    this.changeInput(this.selectedDateString);
                    break;
                case 33:
                    this.moveDateMonthBy(event.ctrlKey ? -12 : -1);
                    break;
                case 34:
                    this.moveDateMonthBy(event.ctrlKey ? 12 : 1);
                    break;
                case 38:
                    this.moveDateBy(-7);
                    break;
                case 40:
                    this.moveDateBy(7);
                    break;
                case 37:
                    this.moveDateBy(-1);
                    break;
                case 39:
                    this.moveDateBy(1);
                    break;
                default:
                    return;
            }
            event.preventDefault();
        },

        stringToDate: function(string) {
            string = string.replace(/[^\d]/g, '/');
            if (string.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4,4})$/)) {
                return new Date(string);
            } else {
                return null;
            };
        },

        dateToString: function(date) {
            return padString(date.getMonth()+1) +'/'+ padString(date.getDate()) +"/"+ date.getFullYear();

            function padString(number){
                number = '' + number;
                if(number.length == 1){
                    number = '0'+number;
                }
                return number;
            }
        },

        setPosition: function() {
            var offset = this.button.position();
            this.rootLayers.css({
                top: offset.top,
                left: offset.left + this.button.outerWidth() + 4
            });
            if (this.ieframe) {
                this.ieframe.css({
                    width: this.dateSelector.outerWidth(),
                    height: this.dateSelector.outerHeight()
                });
            }
            var bottom = offset.top + this.dateSelector.outerHeight() + 12;
            var top = '';
            if(jFormerUtility.isSet(window.scrollY)) {
                top = window.scrollY;
            }
            else { // IE FTL
                top = document.documentElement.scrollTop;
            }
            if(top + $(window).height() > bottom) {
            } else {
                $.scrollTo(bottom - $(window).height() + 'px', 250, {
                    axis:'y'
                });
            }
        },

        moveDateBy: function(amount) {
            var newDate = new Date(this.selectedDate.getFullYear(), this.selectedDate.getMonth(), this.selectedDate.getDate() + amount);
            this.selectDate(newDate);
        },

        moveDateMonthBy: function(amount) {
            var newDate = new Date(this.selectedDate.getFullYear(), this.selectedDate.getMonth() + amount, this.selectedDate.getDate());
            if (newDate.getMonth() == this.selectedDate.getMonth() + amount + 1) {

                newDate.setDate(0);
            };
            this.selectDate(newDate);
        },

        moveMonthBy: function(amount) {
            var newMonth = new Date(this.currentMonth.getFullYear(), this.currentMonth.getMonth() + amount, this.currentMonth.getDate());
            this.selectMonth(newMonth);
        },

        monthName: function(date) {
            return this.jFormComponentDateSelectorMonthNames[date.getMonth()];
        },

        bindToObj: function(fn) {
            var self = this;
            return function() {
                return fn.apply(self, arguments)
            };
        },

        bindMethodsToObj: function() {
            for (var i = 0; i < arguments.length; i++) {
                this[arguments[i]] = this.bindToObj(this[arguments[i]]);
            };
        },

        indexFor: function(array, value) {
            for (var i = 0; i < array.length; i++) {
                if (value == array[i]) return i;
            };
        },

        monthNum: function(jFormComponentDateSelectorMonthName) {
            return this.indexFor(this.jFormComponentDateSelectorMonthNames, jFormComponentDateSelectorMonthName);
        },

        shortMonthNum: function(jFormComponentDateSelectorMonthName) {
            return this.indexFor(this.short_jFormComponentDateSelectorMonthNames, jFormComponentDateSelectorMonthName);
        },

        shortDayNum: function(day_name) {
            return this.indexFor(this.short_day_names, day_name);
        },

        daysBetween: function(start, end) {
            start = Date.UTC(start.getFullYear(), start.getMonth(), start.getDate());
            end = Date.UTC(end.getFullYear(), end.getMonth(), end.getDate());
            return (end - start) / 86400000;
        },

        changeDayTo: function(dayOfWeek, date, direction) {
            var difference = direction * (Math.abs(date.getDay() - dayOfWeek - (direction * 7)) % 7);
            return new Date(date.getFullYear(), date.getMonth(), date.getDate() + difference);
        },

        rangeStart: function(date) {
            return this.changeDayTo(this.start_of_week, new Date(date.getFullYear(), date.getMonth()), -1);
        },

        rangeEnd: function(date) {
            return this.changeDayTo((this.start_of_week - 1) % 7, new Date(date.getFullYear(), date.getMonth() + 1, 0), 1);
        },

        isFirstDayOfWeek: function(date) {
            return date.getDay() == this.start_of_week;
        },

        isLastDayOfWeek: function(date) {
            return date.getDay() == (this.start_of_week - 1) % 7;
        },

        adjustDays: function(days) {
            var newDays = [];
            for (var i = 0; i < days.length; i++) {
                newDays[i] = days[(i + this.start_of_week) % 7];
            };
            return newDays;
        }
    };

    $.fn.date_input = function(opts) {
        return this.each(function() {
            new DateInput(this, opts);
        });
    };
    $.date_input = {
        initialize: function(opts) {
            $("input.date_input").date_input(opts);
        }
    };

    return DateInput;
})(jQuery);
/// <reference path="../../../lib/jquery-1.2.6.js" />
/*
	Masked Input plugin for jQuery
	Copyright (c) 2007-2009 Josh Bush (digitalbush.com)
	Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
	Version: 1.2.2 (03/09/2009 22:39:06)
*/
(function($) {
	var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask";
	var iPhone = (window.orientation != undefined);

	$.mask = {
		//Predefined character definitions
		definitions: {
			'9': "[0-9]",
			'a': "[A-Za-z]",
			'*': "[A-Za-z0-9]"
		}
	};

	$.fn.extend({
		//Helper Function for Caret positioning
		caret: function(begin, end) {
			if (this.length == 0) return;
			if (typeof begin == 'number') {
				end = (typeof end == 'number') ? end : begin;
				return this.each(function() {
					if (this.setSelectionRange) {
						this.focus();
						this.setSelectionRange(begin, end);
					} else if (this.createTextRange) {
						var range = this.createTextRange();
						range.collapse(true);
						range.moveEnd('character', end);
						range.moveStart('character', begin);
						range.select();
					}
				});
			} else {
				if (this[0].setSelectionRange) {
					begin = this[0].selectionStart;
					end = this[0].selectionEnd;
				} else if (document.selection && document.selection.createRange) {
					var range = document.selection.createRange();
					begin = 0 - range.duplicate().moveStart('character', -100000);
					end = begin + range.text.length;
				}
				return { begin: begin, end: end };
			}
		},
		unmask: function() { return this.trigger("unmask"); },
		mask: function(mask, settings) {
			if (!mask && this.length > 0) {
				var input = $(this[0]);
				var tests = input.data("tests");
				return $.map(input.data("buffer"), function(c, i) {
					return tests[i] ? c : null;
				}).join('');
			}
			settings = $.extend({
				placeholder: "_",
				completed: null
			}, settings);

			var defs = $.mask.definitions;
			var tests = [];
			var partialPosition = mask.length;
			var firstNonMaskPos = null;
			var len = mask.length;

			$.each(mask.split(""), function(i, c) {
				if (c == '?') {
					len--;
					partialPosition = i;
				} else if (defs[c]) {
					tests.push(new RegExp(defs[c]));
					if(firstNonMaskPos==null)
						firstNonMaskPos =  tests.length - 1;
				} else {
					tests.push(null);
				}
			});

			return this.each(function() {
				var input = $(this);
				var buffer = $.map(mask.split(""), function(c, i) { if (c != '?') return defs[c] ? settings.placeholder : c });
				var ignore = false;  			//Variable for ignoring control keys
				var focusText = input.val();

				input.data("buffer", buffer).data("tests", tests);

				function seekNext(pos) {
					while (++pos <= len && !tests[pos]);
					return pos;
				};

				function shiftL(pos) {
					while (!tests[pos] && --pos >= 0);
					for (var i = pos; i < len; i++) {
						if (tests[i]) {
							buffer[i] = settings.placeholder;
							var j = seekNext(i);
							if (j < len && tests[i].test(buffer[j])) {
								buffer[i] = buffer[j];
							} else
								break;
						}
					}
					writeBuffer();
					input.caret(Math.max(firstNonMaskPos, pos));
				};

				function shiftR(pos) {
					for (var i = pos, c = settings.placeholder; i < len; i++) {
						if (tests[i]) {
							var j = seekNext(i);
							var t = buffer[i];
							buffer[i] = c;
							if (j < len && tests[j].test(t))
								c = t;
							else
								break;
						}
					}
				};

				function keydownEvent(e) {
					var pos = $(this).caret();
					var k = e.keyCode;
					ignore = (k < 16 || (k > 16 && k < 32) || (k > 32 && k < 41));
                                        if(!e.shiftKey){
                                            if(k==36){
                                                e.preventDefault();
                                                $(this).caret(seekNext(0));
                                            }

                                            if(k==35){
                                                e.preventDefault();
                                                var tempPos = input.val().indexOf(' ');
                                                var tempLength = input.val().length;
                                                while (tests[tempPos] == null || input.val().charAt(tempPos) != ' '){
                                                    tempPos = tempPos + 1;
                                                    if (tempPos == tempLength){
                                                        break;
                                                    }
                                                }
                                                $(this).caret(tempPos);
                                                return false;
                                            }
                                        }

					//delete selection before proceeding
					if ((pos.begin - pos.end) != 0 && (!ignore || k == 8 || k == 46))
						clearBuffer(pos.begin, pos.end);

					//backspace, delete, and escape get special treatment
					if (k == 8 || k == 46 || (iPhone && k == 127)) {//backspace/delete
						shiftL(pos.begin + (k == 46 ? 0 : -1));
						return false;
					} else if (k == 27) {//escape
						input.val(focusText);
						input.caret(0, checkVal());
						return false;
					}
				};

				function keypressEvent(e) {
					if (ignore) {
						ignore = false;
						//Fixes Mac FF bug on backspace
						return (e.keyCode == 8) ? false : null;
					}
					e = e || window.event;
					var k = e.charCode || e.keyCode || e.which;
					var pos = $(this).caret();

					if (e.ctrlKey || e.altKey || e.metaKey) {//Ignore
						return true;
					} else if ((k >= 32 && k <= 125) || k > 186) {//typeable characters
                                            var p = seekNext(pos.begin - 1);
                                            if (p < len) {
                                                var c = String.fromCharCode(k);
                                                if (tests[p].test(c)) {
                                                    shiftR(p);
                                                    buffer[p] = c;
                                                    writeBuffer();
                                                    var next = seekNext(p);
                                                    $(this).caret(next);
                                                    if (settings.completed && next == len)
                                                        settings.completed.call(input);
                                                }
                                            }
					}
					return false;
				};

				function clearBuffer(start, end) {
					for (var i = start; i < end && i < len; i++) {
						if (tests[i])
							buffer[i] = settings.placeholder;
					}
				};

				function writeBuffer() { return input.val(buffer.join('')).val(); };

				function checkVal(allow) {
					//try to place characters where they belong
					var test = input.val();
					var lastMatch = -1;
					for (var i = 0, pos = 0; i < len; i++) {
						if (tests[i]) {
							buffer[i] = settings.placeholder;
							while (pos++ < test.length) {
								var c = test.charAt(pos - 1);
								if (tests[i].test(c)) {
									buffer[i] = c;
									lastMatch = i;
									break;
								}
							}
							if (pos > test.length)
								break;
						} else if (buffer[i] == test[pos] && i!=partialPosition) {
							pos++;
							lastMatch = i;
						}
					}
					if (!allow && lastMatch + 1 < partialPosition) {
						input.val("");
						clearBuffer(0, len);
					} else if (allow || lastMatch + 1 >= partialPosition) {
						writeBuffer();
						if (!allow) input.val(input.val().substring(0, lastMatch + 1));
					}
					return (partialPosition ? i : firstNonMaskPos);
				};

				if (!input.attr("readonly"))
					input
					.one("unmask", function() {
						input
							.unbind(".mask")
							.removeData("buffer")
							.removeData("tests");
					})
					.bind("focus.mask", function() {
						focusText = input.val();
						var pos = checkVal();
						writeBuffer();
						setTimeout(function() {
							if (pos == mask.length)
								input.caret(0, pos);
							else
								input.caret(pos);
						}, 0);
					})
					.bind("blur.mask", function() {
						checkVal();
						if (input.val() != focusText)
							input.change();
					})
					.bind("keydown.mask", keydownEvent)
					.bind("keypress.mask", keypressEvent)
					.bind(pasteEventName, function() {
						setTimeout(function() { input.caret(checkVal(true)); }, 0);
					});

				checkVal(); //Perform initial check for existing values
			});
		}
	});
})(jQuery);/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/9/2009
 * @author Ariel Flesler
 * @version 1.4.1
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);

/**
 * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/11/2009
 * @author Ariel Flesler
 * @version 1.2.7
 **/
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);

/**
 * jQuery[a] - Animated scrolling of series
 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/20/2008
 * @author Ariel Flesler
 * @version 1.2.1
 *
 * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
 */
;(function($){var a='serialScroll',b='.'+a,c='bind',C=$[a]=function(b){$.scrollTo.window()[a](b)};C.defaults={duration:1e3,axis:'x',event:'click',start:0,step:1,lock:1,cycle:1,constant:1};$.fn[a]=function(y){y=$.extend({},C.defaults,y);var z=y.event,A=y.step,B=y.lazy;return this.each(function(){var j=y.target?this:document,k=$(y.target||this,j),l=k[0],m=y.items,o=y.start,p=y.interval,q=y.navigation,r;if(!B)m=w();if(y.force)t({},o);$(y.prev||[],j)[c](z,-A,s);$(y.next||[],j)[c](z,A,s);if(!l.ssbound)k[c]('prev'+b,-A,s)[c]('next'+b,A,s)[c]('goto'+b,t);if(p)k[c]('start'+b,function(e){if(!p){v();p=1;u()}})[c]('stop'+b,function(){v();p=0});k[c]('notify'+b,function(e,a){var i=x(a);if(i>-1)o=i});l.ssbound=1;if(y.jump)(B?k:w())[c](z,function(e){t(e,x(e.target))});if(q)q=$(q,j)[c](z,function(e){e.data=Math.round(w().length/q.length)*q.index(this);t(e,this)});function s(e){e.data+=o;t(e,this)};function t(e,a){if(!isNaN(a)){e.data=a;a=l}var c=e.data,n,d=e.type,f=y.exclude?w().slice(0,-y.exclude):w(),g=f.length,h=f[c],i=y.duration;if(d)e.preventDefault();if(p){v();r=setTimeout(u,y.interval)}if(!h){n=c<0?0:n=g-1;if(o!=n)c=n;else if(!y.cycle)return;else c=g-n-1;h=f[c]}if(!h||d&&o==c||y.lock&&k.is(':animated')||d&&y.onBefore&&y.onBefore.call(a,e,h,k,w(),c)===!1)return;if(y.stop)k.queue('fx',[]).stop();if(y.constant)i=Math.abs(i/A*(o-c));k.scrollTo(h,i,y).trigger('notify'+b,[c])};function u(){k.trigger('next'+b)};function v(){clearTimeout(r)};function w(){return $(m,l)};function x(a){if(!isNaN(a))return a;var b=w(),i;while((i=b.index(a))==-1&&a!=l)a=a.parentNode;return i}})}})(jQuery);/**
 * jquery.simpletip 1.3.1. A simple tooltip plugin
 *
 * Copyright (c) 2009 Craig Thompson
 * http://craigsworks.com
 *
 * Licensed under GPLv3
 * http://www.opensource.org/licenses/gpl-3.0.html
 *
 * Launch  : February 2009
 * Version : 1.3.1
 * Released: February 5, 2009 - 11:04am
 */
(function($){

    function Simpletip(elem, conf)
    {
        var self = this;
        elem = jQuery(elem);

        var wrappedContent = ['<span class="tipArrow"></span><div class="tipContent">',conf.content.html(),'</div>'].join('');

        var tooltip = jQuery(conf.content)
        .addClass(conf.baseClass)
        .addClass( (conf.fixed) ? conf.fixedClass : '' )
        .addClass( (conf.persistent) ? conf.persistentClass : '' )
        .html(wrappedContent);

        // Add an event listener that listens for a window resize and repositions the element
        jQuery(window).resize(function(){
            if(tooltip.is(':visible')) {
                self.updatePos();
            }

        });

        if(!conf.hidden) tooltip.show();
        else tooltip.hide();

        if(!conf.persistent)
        {
            elem.hover(
                function(event){
                    self.show(event)
                },
                function(){
                    self.hide()
                }
                );

            if(!conf.fixed)
            {
                elem.mousemove( function(event){
                    if(tooltip.css('display') !== 'none') self.updatePos(event);
                });
            };
        }
        else
        {
            elem.click(function(event)
            {
                if(event.target === elem.get(0))
                {
            //if(tooltip.css('display') !== 'none')
            // self.hide();
            // else
            //self.show();
            }
            });

            jQuery(window).mousedown(function(event)
            {
                if(tooltip.css('display') !== 'none')
                {
                    var check = (conf.focus) ? jQuery(event.target).parents('.tooltip').andSelf().filter(function(){
                        return this === tooltip.get(0)
                    }).length : 0;
                //if(check === 0) self.hide();
                };
            });
        };


        jQuery.extend(self,
        {
            getVersion: function()
            {
                return [1, 2, 0];
            },

            getParent: function()
            {
                return elem;
            },

            getTooltip: function()
            {
                return tooltip;
            },

            getPos: function()
            {
                return tooltip.position();
            },

            setPos: function(posX, posY)
            {
                var elemPos = elem.position();

                if(typeof posX == 'string') posX = parseInt(posX) + elemPos.left;
                if(typeof posY == 'string') posY = parseInt(posY) + elemPos.top;

                tooltip.css({
                    left: posX,
                    top: posY
                });

                return self;
            },

            show: function(event)
            {
                var onbefore = conf.onBeforeShow();
                if(onbefore === false){
                    return false;
                }
                self.updatePos( (conf.fixed) ? null : event );

                switch(conf.showEffect)
                {
                    case 'fade':
                        tooltip.fadeIn(conf.showTime); break;
                    case 'slide':
                        tooltip.slideDown(conf.showTime, self.updatePos); break;
                    case 'custom':
                        conf.showCustom.call(tooltip, conf.showTime); break;
                    default:
                    case 'none':
                        tooltip.show(); break;
                };

                tooltip.addClass(conf.activeClass);

                conf.onShow.call(self);

                jQuery(document).trigger('blurTip', [tooltip, 'show']);

                return self;
            },

            hide: function()
            {
                conf.onBeforeHide.call(self);

                switch(conf.hideEffect)
                {
                    case 'fade':
                        tooltip.fadeOut(conf.hideTime); break;
                    case 'slide':
                        tooltip.slideUp(conf.hideTime); break;
                    case 'custom':
                        conf.hideCustom.call(tooltip, conf.hideTime); break;
                    default:
                    case 'none':
                        tooltip.hide(); break;
                };

                tooltip.removeClass(conf.activeClass);

                conf.onHide.call(self);

                jQuery(document).trigger('blurTip', [tooltip, 'hide']);

                return self;
            },

            update: function(content)
            {

                //tooltip.html(content);

                return self;
            },

            load: function(uri, data)
            {
                conf.beforeContentLoad.call(self);

                tooltip.load(uri, data, function(){
                    conf.onContentLoad.call(self);
                });

                return self;
            },

            boundryCheck: function(posX, posY)
            {
                var newX = posX + tooltip.outerWidth();
                var newY = posY + tooltip.outerHeight();

                var windowWidth = jQuery(window).width() + jQuery(window).scrollLeft();
                var windowHeight = jQuery(window).height() + jQuery(window).scrollTop();

                return [(newX >= windowWidth), (newY >= windowHeight)];
            },

            updatePos: function(event)
            {
                var tooltipWidth = tooltip.outerWidth();
                var tooltipHeight = tooltip.outerHeight();

                if(!event && conf.fixed)
                {
                    if(conf.position.constructor == Array)
                    {
                        posX = parseInt(conf.position[0]);
                        posY = parseInt(conf.position[1]);
                    }
                    else if(jQuery(conf.position).attr('nodeType') === 1)
                    {
                        var offset = jQuery(conf.position).position();
                        posX = offset.left;
                        posY = offset.top;
                    }
                    else
                    {
                        var elemPos = elem.position();
                        var elemWidth = elem.outerWidth();
                        var elemHeight = elem.outerHeight();
                        var posX = '';
                        var posY = '';
                        switch(conf.position)
                        {
                            case 'top':
                                posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
                                posY = elemPos.top - tooltipHeight;
                                break;

                            case 'bottom':
                                posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
                                posY = elemPos.top + elemHeight;
                                break;

                            case 'left':
                                posX = elemPos.left - tooltipWidth;
                                posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
                                break;

                            case 'right':
                                posX = elemPos.left + elemWidth;
                                posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
                                break;

                            case 'topRight':
                                posX = elemPos.left + elemWidth;
                                posY = elemPos.top;
                                break;

                            default:
                            case 'default':
                                posX = (elemWidth / 2) + elemPos.left + 20;
                                posY = elemPos.top;
                                break;
                        };
                    };
                }
                else
                {
                    var posX = event.pageX;
                    var posY = event.pageY;
                };

                if(typeof conf.position != 'object')
                {
                    posX = posX + conf.offset[0];
                    posY = posY + conf.offset[1];

                    if(conf.boundryCheck)
                    {
                        var overflow = self.boundryCheck(posX, posY);

                        if(overflow[0]) posX = posX - (tooltipWidth / 2) - (2 * conf.offset[0]);
                        if(overflow[1]) posY = posY - (tooltipHeight / 2) - (2 * conf.offset[1]);
                    }
                }
                else
                {
                    if(typeof conf.position[0] == "string") posX = String(posX);
                    if(typeof conf.position[1] == "string") posY = String(posY);
                };

                self.setPos(posX, posY);

                return self;
            }
        });
    };

    jQuery.fn.simpletip = function(conf)
    {
        // Check if a simpletip is already present
        var api = jQuery(this).eq(typeof conf == 'number' ? conf : 0).data("simpletip");
        if(api) return api;

        // Default configuration
        var defaultConf = {
            // Basics
            content: 'A simple tooltip',
            persistent: false,
            focus: false,
            hidden: true,

            // Positioning
            position: 'default',
            offset: [0, 0],
            boundryCheck: false,
            fixed: true,

            // Effects
            showEffect: 'fade',
            showTime: 150,
            showCustom: null,
            hideEffect: 'fade',
            hideTime: 150,
            hideCustom: null,

            // Selectors and classes
            baseClass: 'tooltip',
            activeClass: 'active',
            fixedClass: 'fixed',
            persistentClass: 'persistent',
            focusClass: 'focus',

            // Callbacks
            onBeforeShow: function(){
                return true;
            },
            onShow: function(){},
            onBeforeHide: function(){},
            onHide: function(){},
            beforeContentLoad: function(){},
            onContentLoad: function(){}
        };
        jQuery.extend(defaultConf, conf);

        this.each(function()
        {
            var el = new Simpletip(jQuery(this), defaultConf);
            jQuery(this).data("simpletip", el);
        });

        return this;
    };
})();/**
 * jFormer is the steward of the form. Holds base functions which are not specific to any page, section, or component.
 * jFormer is initialized on top of the existing HTML and handles validation, tool tip management, dependencies, instances, triggers, pages, and form submission.
 *
 * @author Kirk Ouimet <kirk@kirkouimet.com>
 * @author Seth Jensen <seth@sethjdesign.com>
 * @version .5
 */
JFormer = Class.extend({
    init: function(formId, options) {
        // Keep track of when the form starts initializing (turns off at buttom of init)
        this.initializing = true;

        // Update the options object
        this.options = $.extend(true, {
            animationOptions: {
                pageScroll: {
                    duration: 375,
                    adjustHeightDuration: 375
                },
                instance: {
                    appearDuration: 0,
                    appearEffect: 'fade',
                    removeDuration: 0,
                    removeEffect: 'fade',
                    adjustHeightDuration: 0
                },
                dependency: {
                    appearDuration: 250,
                    appearEffect: 'fade',
                    hideDuration: 100,
                    hideEffect: 'fade',
                    adjustHeightDuration: 100
                },
                alert: {
                    appearDuration: 250,
                    appearEffect: 'fade',
                    hideDuration: 100,
                    hideEffect: 'fade'
                },
                modal: {
                    appearDuration: 0,
                    hideDuration: 0
                }
            },
            trackBind: false,
            disableAnalytics: false,
            setupPageScroller: true,
            validationTips: true,
            pageNavigator: false,
            saveState: false,
            splashPage: false,
            progressBar: false,
            alertsEnabled: true,
            clientSideValidation: true,
            debugMode: false,
            submitButtonText: 'Submit',
            submitProcessingButtonText: 'Processing...',
            onSubmitStart: function() {return true;},
            onSubmitFinish: function() {return true;}
        }, options.options || {});


        // Show number of binds
        if(this.options.trackBind){
            jQuery.fn.bind = function(bind) {
                return function () {
                    console.count("jQuery Bind Count");
                    console.log("jQuery Bind %o", arguments[0] , this);
                    return bind.apply(this, arguments);
                };
            }(jQuery.fn.bind);
        }

        // Class variables
        this.id = formId;
        this.form = $(['form#',this.id].join(''));
        this.formData = {};
        this.jFormPageWrapper = this.form.find('div.jFormPageWrapper');
        this.jFormPageScroller = this.form.find('div.jFormPageScroller');
        this.jFormPageNavigator = null;
        this.jFormPages = {};
        this.currentJFormPage = null;
        this.maxJFormPageIdArrayIndexReached = null;
        this.jFormPageIdArray = [];
        this.currentJFormPageIdArrayIndex = null;
        this.blurredTips = [];
        this.lastEnabledPage = false;

        // Stats
        this.initializationTime = (new Date().getTime()) / 1000;
        this.durationInSeconds = 0;
        this.jFormComponentCount = 0;

        // Controls
        this.control = this.form.find('ul.jFormerControl');
        this.controlNextLi = this.form.find('ul.jFormerControl li.nextLi');
        this.controlNextButton = this.controlNextLi.find('button.nextButton');
        this.controlPreviousLi = this.form.find('ul.jFormerControl li.previousLi');
        this.controlPreviousButton = this.controlPreviousLi.find('button.previousButton');

        // Save states
        this.saveIntervalSetTimeoutId = null;

        // Initialize all of the pages
        this.initPages(options.jFormPages);

        // Add a splash page if enabled
        if(this.options.splashPage !== false || this.options.saveState !== false) {
            if(this.options.splashPage == false) {
                this.options.splashPage = {};
            }
            this.addSplashPage();
        }
        // Set the current page
        else {
            this.currentJFormPageIdArrayIndex = 0;
            this.maxJFormPageIdArrayIndexReached = 0;
            this.currentJFormPage = this.jFormPages[this.jFormPageIdArray[0]];
            this.currentJFormPage.active = true;
            this.currentJFormPage.startTime = (new Date().getTime() / 1000 );
            // Add the page navigator
            if(this.options.pageNavigator !== false) {
                this.addPageNavigator();
            }
        }

        // Setup the page scroller - mainly CSS changes to width and height
        if(this.options.setupPageScroller) {
            this.setupPageScroller();
        }

        // Hide all inactive pages
        this.hideInactivePages();

        // Setup the control buttons
        this.setupControl();

        // Add a submit button listener
        this.addSubmitListener();

        // Add enter key listener
        this.addEnterKeyListener();

        // The blur tip listener
        this.addBlurTipListener();

        // Check dependencies
        this.checkDependencies(true);

        // Analytics - disabled for now
        //this.recordAnalytics();

        // Record when the form is finished initializing
        this.initializing = false;

        //functions that need to run after the page is completely loaded
        var self = this;
        $(window).load(function(){
            self.adjustHeight();
        });
    },

    initPages: function(jFormPages) {
        var self = this
        var each = $.each;
        var dependencies = {};

        each(jFormPages, function(jFormPageKey, jFormPageValue) {
            var jFormPage = new JFormPage(self, jFormPageKey, jFormPageValue.options);
            jFormPage.show();

            // Handle page level dependencies
            if(jFormPage.options.dependencyOptions !== null) {
                $.each(jFormPage.options.dependencyOptions.dependentOn, function(index, componentId) {
                    if(dependencies[componentId] === undefined) {
                        dependencies[componentId] = {pages:[],sections:[],components:[]};
                    }
                    dependencies[componentId].pages.push({jFormPageId:jFormPageKey});
                });
            }

            each(jFormPageValue.jFormSections, function(jFormSectionKey, jFormSectionValue) {
                var jFormSection = new JFormSection(jFormPage, jFormSectionKey, jFormSectionValue.options);

                // Handle section level dependencies
                if(jFormSection.options.dependencyOptions !== null) {
                    $.each(jFormSection.options.dependencyOptions.dependentOn, function(index, componentId) {
                        if(dependencies[componentId] === undefined) {
                            dependencies[componentId] = {pages:[],sections:[],components:[]};
                        }
                        dependencies[componentId].sections.push({jFormPageId:jFormPageKey,jFormSectionId:jFormSectionKey});
                    });
                }

                each(jFormSectionValue.jFormComponents, function(jFormComponentKey, jFormComponentValue) {
                    self.jFormComponentCount = self.jFormComponentCount + 1;
                    var jFormComponent = new window[jFormComponentValue.type](jFormSection, jFormComponentKey, jFormComponentValue.type, jFormComponentValue.options);
                    jFormSection.addComponent(jFormComponent);

                    // Handle component level dependencies
                    if(jFormComponent.options.dependencyOptions !== null) {
                        $.each(jFormComponent.options.dependencyOptions.dependentOn, function(index, componentId) {
                            if(dependencies[componentId] === undefined) {
                                dependencies[componentId] = {pages:[],sections:[],components:[]};
                            }
                            dependencies[componentId].components.push({jFormPageId:jFormPageKey,jFormSectionId:jFormSectionKey,jFormComponentId:jFormComponentKey});
                        });
                    }
                });
                jFormPage.addSection(jFormSection);
            });
            self.addJFormPage(jFormPage);
        });

        // Add listeners for all of the components that are being dependent on
        $.each(dependencies, function(componentId, dependentTypes) {

            $('#'+componentId+':text, textarea#'+componentId).bind('keyup', function(event) {
                $.each(dependentTypes.pages, function(index, object) {
                    self.jFormPages[object.jFormPageId].checkDependencies();
                });
                $.each(dependentTypes.sections, function(index, object) {
                    self.jFormPages[object.jFormPageId].jFormSections[object.jFormSectionId].checkDependencies();
                });
                $.each(dependentTypes.components, function(index, object) {
                    self.jFormPages[object.jFormPageId].jFormSections[object.jFormSectionId].jFormComponents[object.jFormComponentId].checkDependencies();
                });
            });

            $('#'+componentId+'-wrapper').bind('jFormComponent:changed', function(event) {
                //console.log('running depend check');

                $.each(dependentTypes.pages, function(index, object) {
                    self.jFormPages[object.jFormPageId].checkDependencies();
                });
                $.each(dependentTypes.sections, function(index, object) {
                    self.jFormPages[object.jFormPageId].jFormSections[object.jFormSectionId].checkDependencies();
                });
                $.each(dependentTypes.components, function(index, object) {
                    //console.log('running a check', componentId, 'for', object.jFormComponentId);
                    self.jFormPages[object.jFormPageId].jFormSections[object.jFormSectionId].jFormComponents[object.jFormComponentId].checkDependencies();
                });
            });

            // Handle instances (this is super kludgy)
            var component = self.select(componentId);
            //console.log(component);
            if(component !== null && component.options.instanceOptions !== null){
                component.options.dependencies = dependentTypes;
            }
        });
    },

    select: function(jFormComponentId) {
        var componentFound = false,
        component = null;
        $.each(this.jFormPages, function(jFormPageKey, jFormPage){
            $.each(jFormPage.jFormSections, function(sectionKey, sectionObject){
                $.each(sectionObject.jFormComponents, function(componentKey, componentObject){
                    if (componentObject.id == jFormComponentId){
                        component = componentObject;
                        componentFound = true;
                    }
                    return !componentFound;
                });
                return !componentFound;
            });
            return !componentFound;
        });
        return component;
    },

    checkDependencies: function(onInit) {
        $.each(this.jFormPages, function(jFormPageKey, jFormPage) {
            jFormPage.checkDependencies();

            $.each(jFormPage.jFormSections, function(jFormSectionKey, jFormSection) {
                jFormSection.checkDependencies();

                $.each(jFormSection.jFormComponents, function(jFormComponentKey, jFormComponent) {
                    jFormComponent.checkDependencies();
                });
            });
        });
    },

    addSplashPage: function() {
        var self = this;

        // Setup the jFormPage for the splash page
        this.options.splashPage.jFormPage = new JFormPage(this, this.form.find('div.jFormerSplashPage').attr('id'));
        this.options.splashPage.jFormPage.addSection(new JFormSection(this.options.splashPage.jFormPage, this.form.find('div.jFormerSplashPage').attr('id') + '-section'));
        this.options.splashPage.jFormPage.page.width(this.form.width());
        this.options.splashPage.jFormPage.active = true;
        this.options.splashPage.jFormPage.startTime = (new Date().getTime() / 1000 );

        // Set the splash page as the current page
        this.currentJFormPage = this.options.splashPage.jFormPage;

        // Set the height of the page wrapper to the height of the splash page
        this.jFormPageWrapper.height(this.options.splashPage.jFormPage.page.outerHeight());

        // If they have a custom button
        if(this.options.splashPage.customButtonId) {
            this.options.splashPage.controlSplashLi = this.form.find('#'+this.options.splashPage.customButtonId);
            this.options.splashPage.controlSplashButton = this.form.find('#'+this.options.splashPage.customButtonId);
        }
        // Use the native control buttons
        else {
            this.options.splashPage.controlSplashLi = this.form.find('li.splashLi');
            this.options.splashPage.controlSplashButton = this.form.find('button.splashButton');
        }

        // Hide the other native controls
        this.setupControl();

        // Handle save state options on the splash page
        if(this.options.saveState !== false) {
            self.addSaveStateToSplashPage();
        }
        // If there is no save state, just setup the button to start the form
        else {
            this.options.splashPage.controlSplashButton.bind('click', function(event) {
                event.preventDefault();
                self.beginFormFromSplashPage(false);
            });
        }
    },

    beginFormFromSplashPage: function(initSaveState, loadForm) {
        var self = this;

        // Add the page navigator
        if(this.options.pageNavigator !== false && this.jFormPageNavigator == null) {
            this.addPageNavigator();
            this.jFormPageNavigator.show();
        }
        else if(this.options.pageNavigator !== false) {
            this.jFormPageNavigator.show();
        }

        // Find all of the pages
        var pages = this.form.find('.jFormPage');

        // Set the width of each page
        pages.css('width', this.form.find('.jFormWrapperContainer').width());

        // Mark the splash page as inactive
        self.options.splashPage.jFormPage.active = false;

        if(!loadForm){
            // Set the current page index
            self.currentJFormPageIdArrayIndex = 0;

            // Scroll to the new page, hide the old page when it is finished
            self.jFormPages[self.jFormPageIdArray[0]].scrollTo({onAfter: function() {
                self.options.splashPage.jFormPage.hide();
                self.renumberPageNavigator();
            }});
        }

        // Initialize the save state is set
        if(initSaveState) {
            self.initSaveState();
        }
    },

    addSaveStateToSplashPage: function() {
        var self = this;
        // Initialize the three save state components

        var sectionId = self.options.splashPage.jFormPage.id + '-section';
        $.each(self.options.saveState.components, function(jFormComponentId, jFormComponentOptions) {
            self.options.splashPage.jFormPage.jFormSections[sectionId].addComponent(new window[jFormComponentOptions.type](self.options.splashPage.jFormPage.jFormSections[sectionId], jFormComponentId, jFormComponentOptions.type, jFormComponentOptions.options));
        });

        // When they change the option from new to resume, alter the label and peform maintenance
        var formState = 'newForm'; // Default value
        var saveStateJFormComponents = this.options.splashPage.jFormPage.jFormSections[sectionId].jFormComponents;
        saveStateJFormComponents.saveStateStatus.component.find('input:option').bind('click', {context: this}, function(event) {
            // Remove any failure notices
            self.form.find('li.jFormerFailureNotice').remove();

            formState = $(event.target).val();
            // Change the form to reflect building a new form
            if(formState == 'newForm') {
                saveStateJFormComponents.saveStatePassword.component.find('label').html('Create password: <span class="jFormComponentLabelRequiredStar"> *</span>');
                self.options.splashPage.controlSplashButton.text('Begin');
            }
            // Change the form to reflect resuming a form
            else if(formState == 'resumeForm') {
                saveStateJFormComponents.saveStatePassword.component.find('label').html('Form password: <span class="jFormComponentLabelRequiredStar"> *</span>');
                self.options.splashPage.controlSplashButton.text('Resume');
            }
        });

        // Add a special event listener to the splash page start button
        self.options.splashPage.controlSplashButton.bind('click', {context: this}, function(event) {
            event.preventDefault();

            // Remove any failure notice
            self.form.find('li.jFormerFailureNotice').remove();

            var validateSaveStateIdentifier = saveStateJFormComponents.saveStateIdentifier.validate();
            var validateSaveStatePassword = saveStateJFormComponents.saveStatePassword.validate();
            if(validateSaveStateIdentifier && validateSaveStatePassword) {
                // Set the form button text
                if(formState == 'newForm') {
                    //console.log('newForm');
                    self.options.splashPage.controlSplashButton.text('Creating form...');
                    var formJson = {};
                    formJson.meta = {};
                    formJson.meta.totalTime = 0;
                    formJson.meta.currentPage = self.getActivePage().id;
                    formJson.meta.maxPageIndex = self.maxJFormPageIdArrayIndexReached;
                    formJson.form = {};
                }
                else {
                    self.options.splashPage.controlSplashButton.text('Loading form...');
                }

                $(event.target).attr('disabled', 'disabled');
                $.ajax({
                    url: self.form.attr('action'),
                    type: 'post',
                    data: {
                        'jFormerTask': 'initializeSaveState',
                        'identifier': saveStateJFormComponents.saveStateIdentifier.getValue(),
                        'password': saveStateJFormComponents.saveStatePassword.getValue(),
                        'formState' : formState,
                        'formData' : jFormerUtility.jsonEncode(formJson)
                    },
                    dataType: 'json',
                    success: function(json) {
                        // If the form was successfully initialized
                        if(json.status == 'success'){
                            if(formState == 'newForm'){
                                self.beginFormFromSplashPage(true, false);
                            }
                            else if(formState == 'resumeForm') {
                                self.beginFormFromSplashPage(true, true);

                                // Set the duration from the form save state
                                self.durationInSeconds = json.response.meta.totalTime;

                                // Load the data from the save state
                                self.setData(json.response.form);

                                //setup the pageNavigator
                                self.maxJFormPageIdArrayIndexReached = json.response.meta.maxPageIndex;
                                if(self.options.pageNavigator != null) {
                                    self.updatePageNavigator();
                                }

                                // Scroll to the active page, set in the form save state
                                if(self.jFormPages[json.response.meta.currentPage] == undefined){
                                    json.response.meta.currentPage = self.jFormPages[self.jFormPageIdArray[0]].id;
                                }

                                if(self.jFormPages[json.res
jquery.easyui_form.js
/**
 * form - jQuery EasyUI
 * 
 * Licensed under the GPL:
 *   http://www.gnu.org/licenses/gpl.txt
 *
 * Copyright 2010 stworthy [ stworthy@gmail.com ] 
 */
(function($){
	/**
	 * submit the form
	 */
	function ajaxSubmit(target, options){
		options = options || {};
		
		if (options.onSubmit){
			if (options.onSubmit.call(target) == false) {
				return;
			}
		}
		
		var form = $(target);
		if (options.url){
			form.attr('action', options.url);
		}
		var frameId = 'easyui_frame_' + (new Date().getTime());
		var frame = $('<iframe id='+frameId+' name='+frameId+'></iframe>')
				.attr('src', window.ActiveXObject ? 'javascript:false' : 'about:blank')
				.css({
					position:'absolute',
					top:-1000,
					left:-1000
				});
		var t = form.attr('target'), a = form.attr('action');
		form.attr('target', frameId);
		try {
			frame.appendTo('body');
			frame.bind('load', cb);
			form[0].submit();
		} finally {
			form.attr('action', a);
			t ? form.attr('target', t) : form.removeAttr('target');
		}
		
		var checkCount = 10;
		function cb(){
			frame.unbind();
			var body = $('#'+frameId).contents().find('body');
			var data = body.html();
			if (data == ''){
				if (--checkCount){
					setTimeout(cb, 100);
					return;
				}
				return;
			}
			var ta = body.find('>textarea');
			if (ta.length){
				data = ta.value();
			} else {
				var pre = body.find('>pre');
				if (pre.length){
					data = pre.html();
				}
			}
			if (options.success){
				options.success(data);
			}
//			try{
//				eval('data='+data);
//				if (options.success){
//					options.success(data);
//				}
//			} catch(e) {
//				if (options.failure){
//					options.failure(data);
//				}
//			}
			setTimeout(function(){
				frame.unbind();
				frame.remove();
			}, 100);
		}
	}
	
	/**
	 * load form data
	 * if data is a URL string type load from remote site, 
	 * otherwise load from local data object. 
	 */
	function load(target, data){
		if (typeof data == 'string'){
			$.ajax({
				url: data,
				dataType: 'json',
				success: function(data){
					_load(data);
				}
			});
		} else {
			_load(data);
		}
		
		function _load(data){
			var form = $(target);
			for(var name in data){
				var val = data[name];
				$('input[name='+name+']', form).val(val);
				$('textarea[name='+name+']', form).val(val);
				$('select[name='+name+']', form).val(val);
			}
		}
	}
	
	/**
	 * clear the form fields
	 */
	function clear(target){
		$('input,select,textarea', target).each(function(){
			var t = this.type, tag = this.tagName.toLowerCase();
			if (t == 'text' || t == 'password' || tag == 'textarea')
				this.value = '';
			else if (t == 'checkbox' || t == 'radio')
				this.checked = false;
			else if (tag == 'select')
				this.selectedIndex = -1;
			
		});
	}
	
	/**
	 * set the form to make it can submit with ajax.
	 */
	function setForm(target){
		var options = $.data(target, 'form').options;
		var form = $(target);
		form.unbind('.form').bind('submit.form', function(){
			ajaxSubmit(target, options);
			return false;
		});
	}
	
	$.fn.form = function(options, param){
		if (typeof options == 'string'){
			switch(options){
			case 'submit':
				return this.each(function(){
					ajaxSubmit(this, $.extend({}, $.fn.form.defaults, param||{}));
				});
			case 'load':
				return this.each(function(){
					load(this, param);
				});
			case 'clear':
				return this.each(function(){
					clear(this);
				});
			}
		}
		
		options = options || {};
		return this.each(function(){
			if (!$.data(this, 'form')){
				$.data(this, 'form', {
					options: $.extend({}, $.fn.form.defaults, options)
				});
			}
			setForm(this);
		});
	};
	
	$.fn.form.defaults = {
		url: null,
		onSubmit: function(){},
		success: function(data){}
	};
})(jQuery);
jquery.cookie.js
(function($) {
	$.myCookie = function(name, value, options) {		
		options = $.extend({}, $.fn.myCookie.options, options);
		if (typeof value != 'undefined') {
			if(!!options.key){
				setCookieKey(options.key);
				checkeCookieSize(options.key);
				if(document.cookie.length<=options.key){  
					setCookie(name, value, options);
				}
			}else{
				setCookie(name, value, options);
			}
    }else{
          var cookieValue = null;
          cookieValue = getCookie(name);
          return cookieValue;
    }
};

var  deleteCookieWithKey = function(key){
	var cookieArray = document.cookie.split(';');
	for(var i=0;i<cookieArray.length;i++){
		var name = cookieArray[i].substring(0,cookieArray[i].indexOf('='));
		if(name.indexOf(key) != -1){
			setCookie(name,'',-1);	
		}
	}
	
};

var checkeCookieSize = function(nkey){
	var length = document.cookie.length;
		  while(length>6000 && getCookie('cookieKeys').indexOf(',')>0){
			var cks = getCookie1('cookieKeys');
			if(!!cks){
				var cksArr = cks.split(',');
				var key = cksArr.splice(0,1);
				if(nkey != key){
					deleteCookieWithKey(key);
				}			  		
			  	setCookie('cookieKeys', cksArr.join(','), 7);			  	
			  	length = document.cookie.length;
			}else{
				return false;
			}				  			  			  
	  }
};

var setCookieKey = function(key){
	if(typeof key != 'undefined'){	
		var cks = getCookie('cookieKeys');	
		if(!!cks){			
			if(cks.indexOf("," + key ) > -1 || cks.indexOf(key) === 0){
				
			}else{
				var cksArr = [];
				if(!!cks){
					cksArr = cks.split(',');
				}
				cksArr.push(key);
				setCookie('cookieKeys', cksArr.join(','), 7);				
			}
		}else{
			setCookie('cookieKeys', key, 7);				
		}
	}
};
	
var setCookie = function (name, value, options) {
	 var expires = '';
     if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
               var date;
               if (typeof options.expires == 'number') {
                         date = new Date();
                         date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
               } else {
                         date = options.expires;
               }
               expires = '; expires=' + date.toUTCString();
     }
     var path = options.path ? '; path=' + (options.path) : '';
     var domain = options.domain ? '; domain=' + (options.domain) : '';
     var secure = options.secure ? '; secure' : '';
     document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
};

var getCookie = function(c_name) {
	if (document.cookie.length>0) {
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1) {
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1)
				c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}
	
var deleteCookie = function(key){
	setCookie(key, "", -1);
};	
	
	
$.myCookie.options = {
		key:'',
		cookieSize:6000
};

})(jQuery);
jquery.localRegionCascadeData.js
var localRegionData = {
	"success":true,
	"places":[{
		"id":1,
		"text":"北京市",
		"children":[{
			"id":3,
			"text":"东城区"
		},{
			"id":4,
			"text":"西城区"
		},{
			"id":5,
			"text":"朝阳区"
		},{
			"id":6,
			"text":"丰台区"
		},{
			"id":7,
			"text":"石景山区"
		},{
			"id":8,
			"text":"海淀区"
		},{
			"id":9,
			"text":"门头沟区"
		},{
			"id":10,
			"text":"房山区"
		},{
			"id":11,
			"text":"通州区"
		},{
			"id":12,
			"text":"顺义区"
		},{
			"id":13,
			"text":"昌平区"
		},{
			"id":14,
			"text":"大兴区"
		},{
			"id":15,
			"text":"怀柔区"
		},{
			"id":16,
			"text":"平谷区"
		},{
			"id":18,
			"text":"密云县"
		},{
			"id":19,
			"text":"延庆县"
		}]
	},{
		"id":20,
		"text":"天津市",
		"children":[{
			"id":22,
			"text":"和平区"
		},{
			"id":23,
			"text":"河东区"
		},{
			"id":24,
			"text":"河西区"
		},{
			"id":25,
			"text":"南开区"
		},{
			"id":26,
			"text":"河北区"
		},{
			"id":27,
			"text":"红桥区"
		},{
			"id":28,
			"text":"东丽区"
		},{
			"id":29,
			"text":"西青区"
		},{
			"id":30,
			"text":"津南区"
		},{
			"id":31,
			"text":"北辰区"
		},{
			"id":32,
			"text":"武清区"
		},{
			"id":33,
			"text":"宝坻区"
		},{
			"id":34,
			"text":"滨海新区"
		},{
			"id":36,
			"text":"宁河县"
		},{
			"id":37,
			"text":"静海县"
		},{
			"id":38,
			"text":"蓟县"
		}]
	},{
		"id":39,
		"text":"河北省",
		"children":[{
			"id":40,
			"text":"石家庄市",
			"children":[{
				"id":42,
				"text":"长安区"
			},{
				"id":43,
				"text":"桥东区"
			},{
				"id":44,
				"text":"桥西区"
			},{
				"id":45,
				"text":"新华区"
			},{
				"id":46,
				"text":"井陉矿区"
			},{
				"id":47,
				"text":"裕华区"
			},{
				"id":48,
				"text":"井陉县"
			},{
				"id":49,
				"text":"正定县"
			},{
				"id":50,
				"text":"栾城县"
			},{
				"id":51,
				"text":"行唐县"
			},{
				"id":52,
				"text":"灵寿县"
			},{
				"id":53,
				"text":"高邑县"
			},{
				"id":54,
				"text":"深泽县"
			},{
				"id":55,
				"text":"赞皇县"
			},{
				"id":56,
				"text":"无极县"
			},{
				"id":57,
				"text":"平山县"
			},{
				"id":58,
				"text":"元氏县"
			},{
				"id":59,
				"text":"赵县"
			},{
				"id":60,
				"text":"辛集市"
			},{
				"id":61,
				"text":"藁城市"
			},{
				"id":62,
				"text":"晋州市"
			},{
				"id":63,
				"text":"新乐市"
			},{
				"id":64,
				"text":"鹿泉市"
			}]
		},{
			"id":65,
			"text":"唐山市",
			"children":[{
				"id":67,
				"text":"路南区"
			},{
				"id":68,
				"text":"路北区"
			},{
				"id":69,
				"text":"古冶区"
			},{
				"id":70,
				"text":"开平区"
			},{
				"id":71,
				"text":"丰南区"
			},{
				"id":72,
				"text":"丰润区"
			},{
				"id":73,
				"text":"滦县"
			},{
				"id":74,
				"text":"滦南县"
			},{
				"id":75,
				"text":"乐亭县"
			},{
				"id":76,
				"text":"迁西县"
			},{
				"id":77,
				"text":"玉田县"
			},{
				"id":78,
				"text":"唐海县"
			},{
				"id":79,
				"text":"遵化市"
			},{
				"id":80,
				"text":"迁安市"
			}]
		},{
			"id":81,
			"text":"秦皇岛市",
			"children":[{
				"id":83,
				"text":"海港区"
			},{
				"id":84,
				"text":"山海关区"
			},{
				"id":85,
				"text":"北戴河区"
			},{
				"id":86,
				"text":"青龙满族自治县"
			},{
				"id":87,
				"text":"昌黎县"
			},{
				"id":88,
				"text":"抚宁县"
			},{
				"id":89,
				"text":"卢龙县"
			}]
		},{
			"id":90,
			"text":"邯郸市",
			"children":[{
				"id":92,
				"text":"邯山区"
			},{
				"id":93,
				"text":"丛台区"
			},{
				"id":94,
				"text":"复兴区"
			},{
				"id":95,
				"text":"峰峰矿区"
			},{
				"id":96,
				"text":"邯郸县"
			},{
				"id":97,
				"text":"临漳县"
			},{
				"id":98,
				"text":"成安县"
			},{
				"id":99,
				"text":"大名县"
			},{
				"id":100,
				"text":"涉县"
			},{
				"id":101,
				"text":"磁县"
			},{
				"id":102,
				"text":"肥乡县"
			},{
				"id":103,
				"text":"永年县"
			},{
				"id":104,
				"text":"邱县"
			},{
				"id":105,
				"text":"鸡泽县"
			},{
				"id":106,
				"text":"广平县"
			},{
				"id":107,
				"text":"馆陶县"
			},{
				"id":108,
				"text":"魏县"
			},{
				"id":109,
				"text":"曲周县"
			},{
				"id":110,
				"text":"武安市"
			}]
		},{
			"id":111,
			"text":"邢台市",
			"children":[{
				"id":113,
				"text":"桥东区"
			},{
				"id":114,
				"text":"桥西区"
			},{
				"id":115,
				"text":"邢台县"
			},{
				"id":116,
				"text":"临城县"
			},{
				"id":117,
				"text":"内丘县"
			},{
				"id":118,
				"text":"柏乡县"
			},{
				"id":119,
				"text":"隆尧县"
			},{
				"id":120,
				"text":"任县"
			},{
				"id":121,
				"text":"南和县"
			},{
				"id":122,
				"text":"宁晋县"
			},{
				"id":123,
				"text":"巨鹿县"
			},{
				"id":124,
				"text":"新河县"
			},{
				"id":125,
				"text":"广宗县"
			},{
				"id":126,
				"text":"平乡县"
			},{
				"id":127,
				"text":"威县"
			},{
				"id":128,
				"text":"清河县"
			},{
				"id":129,
				"text":"临西县"
			},{
				"id":130,
				"text":"南宫市"
			},{
				"id":131,
				"text":"沙河市"
			}]
		},{
			"id":132,
			"text":"保定市",
			"children":[{
				"id":134,
				"text":"新市区"
			},{
				"id":135,
				"text":"北市区"
			},{
				"id":136,
				"text":"南市区"
			},{
				"id":137,
				"text":"满城县"
			},{
				"id":138,
				"text":"清苑县"
			},{
				"id":139,
				"text":"涞水县"
			},{
				"id":140,
				"text":"阜平县"
			},{
				"id":141,
				"text":"徐水县"
			},{
				"id":142,
				"text":"定兴县"
			},{
				"id":143,
				"text":"唐县"
			},{
				"id":144,
				"text":"高阳县"
			},{
				"id":145,
				"text":"容城县"
			},{
				"id":146,
				"text":"涞源县"
			},{
				"id":147,
				"text":"望都县"
			},{
				"id":148,
				"text":"安新县"
			},{
				"id":149,
				"text":"易县"
			},{
				"id":150,
				"text":"曲阳县"
			},{
				"id":151,
				"text":"蠡县"
			},{
				"id":152,
				"text":"顺平县"
			},{
				"id":153,
				"text":"博野县"
			},{
				"id":154,
				"text":"雄县"
			},{
				"id":155,
				"text":"涿州市"
			},{
				"id":156,
				"text":"定州市"
			},{
				"id":157,
				"text":"安国市"
			},{
				"id":158,
				"text":"高碑店市"
			}]
		},{
			"id":159,
			"text":"张家口市",
			"children":[{
				"id":161,
				"text":"桥东区"
			},{
				"id":162,
				"text":"桥西区"
			},{
				"id":163,
				"text":"宣化区"
			},{
				"id":164,
				"text":"下花园区"
			},{
				"id":165,
				"text":"宣化县"
			},{
				"id":166,
				"text":"张北县"
			},{
				"id":167,
				"text":"康保县"
			},{
				"id":168,
				"text":"沽源县"
			},{
				"id":169,
				"text":"尚义县"
			},{
				"id":170,
				"text":"蔚县"
			},{
				"id":171,
				"text":"阳原县"
			},{
				"id":172,
				"text":"怀安县"
			},{
				"id":173,
				"text":"万全县"
			},{
				"id":174,
				"text":"怀来县"
			},{
				"id":175,
				"text":"涿鹿县"
			},{
				"id":176,
				"text":"赤城县"
			},{
				"id":177,
				"text":"崇礼县"
			}]
		},{
			"id":178,
			"text":"承德市",
			"children":[{
				"id":180,
				"text":"双桥区"
			},{
				"id":181,
				"text":"双滦区"
			},{
				"id":182,
				"text":"鹰手营子矿区"
			},{
				"id":183,
				"text":"承德县"
			},{
				"id":184,
				"text":"兴隆县"
			},{
				"id":185,
				"text":"平泉县"
			},{
				"id":186,
				"text":"滦平县"
			},{
				"id":187,
				"text":"隆化县"
			},{
				"id":188,
				"text":"丰宁满族自治县"
			},{
				"id":189,
				"text":"宽城满族自治县"
			},{
				"id":190,
				"text":"围场满族蒙古族自治县"
			}]
		},{
			"id":191,
			"text":"沧州市",
			"children":[{
				"id":193,
				"text":"新华区"
			},{
				"id":194,
				"text":"运河区"
			},{
				"id":195,
				"text":"沧县"
			},{
				"id":196,
				"text":"青县"
			},{
				"id":197,
				"text":"东光县"
			},{
				"id":198,
				"text":"海兴县"
			},{
				"id":199,
				"text":"盐山县"
			},{
				"id":200,
				"text":"肃宁县"
			},{
				"id":201,
				"text":"南皮县"
			},{
				"id":202,
				"text":"吴桥县"
			},{
				"id":203,
				"text":"献县"
			},{
				"id":204,
				"text":"孟村回族自治县"
			},{
				"id":205,
				"text":"泊头市"
			},{
				"id":206,
				"text":"任丘市"
			},{
				"id":207,
				"text":"黄骅市"
			},{
				"id":208,
				"text":"河间市"
			}]
		},{
			"id":209,
			"text":"廊坊市",
			"children":[{
				"id":211,
				"text":"安次区"
			},{
				"id":212,
				"text":"广阳区"
			},{
				"id":213,
				"text":"固安县"
			},{
				"id":214,
				"text":"永清县"
			},{
				"id":215,
				"text":"香河县"
			},{
				"id":216,
				"text":"大城县"
			},{
				"id":217,
				"text":"文安县"
			},{
				"id":218,
				"text":"大厂回族自治县"
			},{
				"id":219,
				"text":"霸州市"
			},{
				"id":220,
				"text":"三河市"
			}]
		},{
			"id":221,
			"text":"衡水市",
			"children":[{
				"id":223,
				"text":"桃城区"
			},{
				"id":224,
				"text":"枣强县"
			},{
				"id":225,
				"text":"武邑县"
			},{
				"id":226,
				"text":"武强县"
			},{
				"id":227,
				"text":"饶阳县"
			},{
				"id":228,
				"text":"安平县"
			},{
				"id":229,
				"text":"故城县"
			},{
				"id":230,
				"text":"景县"
			},{
				"id":231,
				"text":"阜城县"
			},{
				"id":232,
				"text":"冀州市"
			},{
				"id":233,
				"text":"深州市"
			}]
		}]
	},{
		"id":234,
		"text":"山西省",
		"children":[{
			"id":235,
			"text":"太原市",
			"children":[{
				"id":237,
				"text":"小店区"
			},{
				"id":238,
				"text":"迎泽区"
			},{
				"id":239,
				"text":"杏花岭区"
			},{
				"id":240,
				"text":"尖草坪区"
			},{
				"id":241,
				"text":"万柏林区"
			},{
				"id":242,
				"text":"晋源区"
			},{
				"id":243,
				"text":"清徐县"
			},{
				"id":244,
				"text":"阳曲县"
			},{
				"id":245,
				"text":"娄烦县"
			},{
				"id":246,
				"text":"古交市"
			}]
		},{
			"id":247,
			"text":"大同市",
			"children":[{
				"id":249,
				"text":"城区"
			},{
				"id":250,
				"text":"矿区"
			},{
				"id":251,
				"text":"南郊区"
			},{
				"id":252,
				"text":"新荣区"
			},{
				"id":253,
				"text":"阳高县"
			},{
				"id":254,
				"text":"天镇县"
			},{
				"id":255,
				"text":"广灵县"
			},{
				"id":256,
				"text":"灵丘县"
			},{
				"id":257,
				"text":"浑源县"
			},{
				"id":258,
				"text":"左云县"
			},{
				"id":259,
				"text":"大同县"
			}]
		},{
			"id":260,
			"text":"阳泉市",
			"children":[{
				"id":262,
				"text":"城区"
			},{
				"id":263,
				"text":"矿区"
			},{
				"id":264,
				"text":"郊区"
			},{
				"id":265,
				"text":"平定县"
			},{
				"id":266,
				"text":"盂县"
			}]
		},{
			"id":267,
			"text":"长治市",
			"children":[{
				"id":269,
				"text":"城区"
			},{
				"id":270,
				"text":"郊区"
			},{
				"id":271,
				"text":"长治县"
			},{
				"id":272,
				"text":"襄垣县"
			},{
				"id":273,
				"text":"屯留县"
			},{
				"id":274,
				"text":"平顺县"
			},{
				"id":275,
				"text":"黎城县"
			},{
				"id":276,
				"text":"壶关县"
			},{
				"id":277,
				"text":"长子县"
			},{
				"id":278,
				"text":"武乡县"
			},{
				"id":279,
				"text":"沁县"
			},{
				"id":280,
				"text":"沁源县"
			},{
				"id":281,
				"text":"潞城市"
			}]
		},{
			"id":282,
			"text":"晋城市",
			"children":[{
				"id":284,
				"text":"城区"
			},{
				"id":285,
				"text":"沁水县"
			},{
				"id":286,
				"text":"阳城县"
			},{
				"id":287,
				"text":"陵川县"
			},{
				"id":288,
				"text":"泽州县"
			},{
				"id":289,
				"text":"高平市"
			}]
		},{
			"id":290,
			"text":"朔州市",
			"children":[{
				"id":292,
				"text":"朔城区"
			},{
				"id":293,
				"text":"平鲁区"
			},{
				"id":294,
				"text":"山阴县"
			},{
				"id":295,
				"text":"应县"
			},{
				"id":296,
				"text":"右玉县"
			},{
				"id":297,
				"text":"怀仁县"
			}]
		},{
			"id":298,
			"text":"晋中市",
			"children":[{
				"id":300,
				"text":"榆次区"
			},{
				"id":301,
				"text":"榆社县"
			},{
				"id":302,
				"text":"左权县"
			},{
				"id":303,
				"text":"和顺县"
			},{
				"id":304,
				"text":"昔阳县"
			},{
				"id":305,
				"text":"寿阳县"
			},{
				"id":306,
				"text":"太谷县"
			},{
				"id":307,
				"text":"祁县"
			},{
				"id":308,
				"text":"平遥县"
			},{
				"id":309,
				"text":"灵石县"
			},{
				"id":310,
				"text":"介休市"
			}]
		},{
			"id":311,
			"text":"运城市",
			"children":[{
				"id":313,
				"text":"盐湖区"
			},{
				"id":314,
				"text":"临猗县"
			},{
				"id":315,
				"text":"万荣县"
			},{
				"id":316,
				"text":"闻喜县"
			},{
				"id":317,
				"text":"稷山县"
			},{
				"id":318,
				"text":"新绛县"
			},{
				"id":319,
				"text":"绛县"
			},{
				"id":320,
				"text":"垣曲县"
			},{
				"id":321,
				"text":"夏县"
			},{
				"id":322,
				"text":"平陆县"
			},{
				"id":323,
				"text":"芮城县"
			},{
				"id":324,
				"text":"永济市"
			},{
				"id":325,
				"text":"河津市"
			}]
		},{
			"id":326,
			"text":"忻州市",
			"children":[{
				"id":328,
				"text":"忻府区"
			},{
				"id":329,
				"text":"定襄县"
			},{
				"id":330,
				"text":"五台县"
			},{
				"id":331,
				"text":"代县"
			},{
				"id":332,
				"text":"繁峙县"
			},{
				"id":333,
				"text":"宁武县"
			},{
				"id":334,
				"text":"静乐县"
			},{
				"id":335,
				"text":"神池县"
			},{
				"id":336,
				"text":"五寨县"
			},{
				"id":337,
				"text":"岢岚县"
			},{
				"id":338,
				"text":"河曲县"
			},{
				"id":339,
				"text":"保德县"
			},{
				"id":340,
				"text":"偏关县"
			},{
				"id":341,
				"text":"原平市"
			}]
		},{
			"id":342,
			"text":"临汾市",
			"children":[{
				"id":344,
				"text":"尧都区"
			},{
				"id":345,
				"text":"曲沃县"
			},{
				"id":346,
				"text":"翼城县"
			},{
				"id":347,
				"text":"襄汾县"
			},{
				"id":348,
				"text":"洪洞县"
			},{
				"id":349,
				"text":"古县"
			},{
				"id":350,
				"text":"安泽县"
			},{
				"id":351,
				"text":"浮山县"
			},{
				"id":352,
				"text":"吉县"
			},{
				"id":353,
				"text":"乡宁县"
			},{
				"id":354,
				"text":"大宁县"
			},{
				"id":355,
				"text":"隰县"
			},{
				"id":356,
				"text":"永和县"
			},{
				"id":357,
				"text":"蒲县"
			},{
				"id":358,
				"text":"汾西县"
			},{
				"id":359,
				"text":"侯马市"
			},{
				"id":360,
				"text":"霍州市"
			}]
		},{
			"id":361,
			"text":"吕梁市",
			"children":[{
				"id":363,
				"text":"离石区"
			},{
				"id":364,
				"text":"文水县"
			},{
				"id":365,
				"text":"交城县"
			},{
				"id":366,
				"text":"兴县"
			},{
				"id":367,
				"text":"临县"
			},{
				"id":368,
				"text":"柳林县"
			},{
				"id":369,
				"text":"石楼县"
			},{
				"id":370,
				"text":"岚县"
			},{
				"id":371,
				"text":"方山县"
			},{
				"id":372,
				"text":"中阳县"
			},{
				"id":373,
				"text":"交口县"
			},{
				"id":374,
				"text":"孝义市"
			},{
				"id":375,
				"text":"汾阳市"
			}]
		}]
	},{
		"id":376,
		"text":"内蒙古自治区",
		"children":[{
			"id":377,
			"text":"呼和浩特市",
			"children":[{
				"id":379,
				"text":"新城区"
			},{
				"id":380,
				"text":"回民区"
			},{
				"id":381,
				"text":"玉泉区"
			},{
				"id":382,
				"text":"赛罕区"
			},{
				"id":383,
				"text":"土默特左旗"
			},{
				"id":384,
				"text":"托克托县"
			},{
				"id":385,
				"text":"和林格尔县"
			},{
				"id":386,
				"text":"清水河县"
			},{
				"id":387,
				"text":"武川县"
			}]
		},{
			"id":388,
			"text":"包头市",
			"children":[{
				"id":390,
				"text":"东河区"
			},{
				"id":391,
				"text":"昆都仑区"
			},{
				"id":392,
				"text":"青山区"
			},{
				"id":393,
				"text":"石拐区"
			},{
				"id":394,
				"text":"白云鄂博矿区"
			},{
				"id":395,
				"text":"九原区"
			},{
				"id":396,
				"text":"土默特右旗"
			},{
				"id":397,
				"text":"固阳县"
			},{
				"id":398,
				"text":"达尔罕茂明安联合旗"
			}]
		},{
			"id":399,
			"text":"乌海市",
			"children":[{
				"id":401,
				"text":"海勃湾区"
			},{
				"id":402,
				"text":"海南区"
			},{
				"id":403,
				"text":"乌达区"
			}]
		},{
			"id":404,
			"text":"赤峰市",
			"children":[{
				"id":406,
				"text":"红山区"
			},{
				"id":407,
				"text":"元宝山区"
			},{
				"id":408,
				"text":"松山区"
			},{
				"id":409,
				"text":"阿鲁科尔沁旗"
			},{
				"id":410,
				"text":"巴林左旗"
			},{
				"id":411,
				"text":"巴林右旗"
			},{
				"id":412,
				"text":"林西县"
			},{
				"id":413,
				"text":"克什克腾旗"
			},{
				"id":414,
				"text":"翁牛特旗"
			},{
				"id":415,
				"text":"喀喇沁旗"
			},{
				"id":416,
				"text":"宁城县"
			},{
				"id":417,
				"text":"敖汉旗"
			}]
		},{
			"id":418,
			"text":"通辽市",
			"children":[{
				"id":420,
				"text":"科尔沁区"
			},{
				"id":421,
				"text":"科尔沁左翼中旗"
			},{
				"id":422,
				"text":"科尔沁左翼后旗"
			},{
				"id":423,
				"text":"开鲁县"
			},{
				"id":424,
				"text":"库伦旗"
			},{
				"id":425,
				"text":"奈曼旗"
			},{
				"id":426,
				"text":"扎鲁特旗"
			},{
				"id":427,
				"text":"霍林郭勒市"
			}]
		},{
			"id":428,
			"text":"鄂尔多斯市",
			"children":[{
				"id":430,
				"text":"东胜区"
			},{
				"id":431,
				"text":"达拉特旗"
			},{
				"id":432,
				"text":"准格尔旗"
			},{
				"id":433,
				"text":"鄂托克前旗"
			},{
				"id":434,
				"text":"鄂托克旗"
			},{
				"id":435,
				"text":"杭锦旗"
			},{
				"id":436,
				"text":"乌审旗"
			},{
				"id":437,
				"text":"伊金霍洛旗"
			}]
		},{
			"id":438,
			"text":"呼伦贝尔市",
			"children":[{
				"id":440,
				"text":"海拉尔区"
			},{
				"id":441,
				"text":"阿荣旗"
			},{
				"id":442,
				"text":"莫力达瓦达斡尔族自治旗"
			},{
				"id":443,
				"text":"鄂伦春自治旗"
			},{
				"id":444,
				"text":"鄂温克族自治旗"
			},{
				"id":445,
				"text":"陈巴尔虎旗"
			},{
				"id":446,
				"text":"新巴尔虎左旗"
			},{
				"id":447,
				"text":"新巴尔虎右旗"
			},{
				"id":448,
				"text":"满洲里市"
			},{
				"id":449,
				"text":"牙克石市"
			},{
				"id":450,
				"text":"扎兰屯市"
			},{
				"id":451,
				"text":"额尔古纳市"
			},{
				"id":452,
				"text":"根河市"
			}]
		},{
			"id":453,
			"text":"巴彦淖尔市",
			"children":[{
				"id":455,
				"text":"临河区"
			},{
				"id":456,
				"text":"五原县"
			},{
				"id":457,
				"text":"磴口县"
			},{
				"id":458,
				"text":"乌拉特前旗"
			},{
				"id":459,
				"text":"乌拉特中旗"
			},{
				"id":460,
				"text":"乌拉特后旗"
			},{
				"id":461,
				"text":"杭锦后旗"
			}]
		},{
			"id":462,
			"text":"乌兰察布市",
			"children":[{
				"id":464,
				"text":"集宁区"
			},{
				"id":465,
				"text":"卓资县"
			},{
				"id":466,
				"text":"化德县"
			},{
				"id":467,
				"text":"商都县"
			},{
				"id":468,
				"text":"兴和县"
			},{
				"id":469,
				"text":"凉城县"
			},{
				"id":470,
				"text":"察哈尔右翼前旗"
			},{
				"id":471,
				"text":"察哈尔右翼中旗"
			},{
				"id":472,
				"text":"察哈尔右翼后旗"
			},{
				"id":473,
				"text":"四子王旗"
			},{
				"id":474,
				"text":"丰镇市"
			}]
		},{
			"id":475,
			"text":"兴安盟",
			"children":[{
				"id":476,
				"text":"乌兰浩特市"
			},{
				"id":477,
				"text":"阿尔山市"
			},{
				"id":478,
				"text":"科尔沁右翼前旗"
			},{
				"id":479,
				"text":"科尔沁右翼中旗"
			},{
				"id":480,
				"text":"扎赉特旗"
			},{
				"id":481,
				"text":"突泉县"
			}]
		},{
			"id":482,
			"text":"锡林郭勒盟",
			"children":[{
				"id":483,
				"text":"二连浩特市"
			},{
				"id":484,
				"text":"锡林浩特市"
			},{
				"id":485,
				"text":"阿巴嘎旗"
			},{
				"id":486,
				"text":"苏尼特左旗"
			},{
				"id":487,
				"text":"苏尼特右旗"
			},{
				"id":488,
				"text":"东乌珠穆沁旗"
			},{
				"id":489,
				"text":"西乌珠穆沁旗"
			},{
				"id":490,
				"text":"太仆寺旗"
			},{
				"id":491,
				"text":"镶黄旗"
			},{
				"id":492,
				"text":"正镶白旗"
			},{
				"id":493,
				"text":"正蓝旗"
			},{
				"id":494,
				"text":"多伦县"
			}]
		},{
			"id":495,
			"text":"阿拉善盟",
			"children":[{
				"id":496,
				"text":"阿拉善左旗"
			},{
				"id":497,
				"text":"阿拉善右旗"
			},{
				"id":498,
				"text":"额济纳旗"
			}]
		}]
	},{
		"id":499,
		"text":"辽宁省",
		"children":[{
			"id":500,
			"text":"沈阳市",
			"children":[{
				"id":502,
				"text":"和平区"
			},{
				"id":503,
				"text":"沈河区"
			},{
				"id":504,
				"text":"大东区"
			},{
				"id":505,
				"text":"皇姑区"
			},{
				"id":506,
				"text":"铁西区"
			},{
				"id":507,
				"text":"苏家屯区"
			},{
				"id":508,
				"text":"东陵区"
			},{
				"id":509,
				"text":"沈北新区"
			},{
				"id":510,
				"text":"于洪区"
			},{
				"id":511,
				"text":"辽中县"
			},{
				"id":512,
				"text":"康平县"
			},{
				"id":513,
				"text":"法库县"
			},{
				"id":514,
				"text":"新民市"
			}]
		},{
			"id":515,
			"text":"大连市",
			"children":[{
				"id":517,
				"text":"中山区"
			},{
				"id":518,
				"text":"西岗区"
			},{
				"id":519,
				"text":"沙河口区"
			},{
				"id":520,
				"text":"甘井子区"
			},{
				"id":521,
				"text":"旅顺口区"
			},{
				"id":522,
				"text":"金州区"
			},{
				"id":523,
				"text":"长海县"
			},{
				"id":524,
				"text":"瓦房店市"
			},{
				"id":525,
				"text":"普兰店市"
			},{
				"id":526,
				"text":"庄河市"
			}]
		},{
			"id":527,
			"text":"鞍山市",
			"children":[{
				"id":529,
				"text":"铁东区"
			},{
				"id":530,
				"text":"铁西区"
			},{
				"id":531,
				"text":"立山区"
			},{
				"id":532,
				"text":"千山区"
			},{
				"id":533,
				"text":"台安县"
			},{
				"id":534,
				"text":"岫岩满族自治县"
			},{
				"id":535,
				"text":"海城市"
			}]
		},{
			"id":536,
			"text":"抚顺市",
			"children":[{
				"id":538,
				"text":"新抚区"
			},{
				"id":539,
				"text":"东洲区"
			},{
				"id":540,
				"text":"望花区"
			},{
				"id":541,
				"text":"顺城区"
			},{
				"id":542,
				"text":"抚顺县"
			},{
				"id":543,
				"text":"新宾满族自治县"
			},{
				"id":544,
				"text":"清原满族自治县"
			}]
		},{
			"id":545,
			"text":"本溪市",
			"children":[{
				"id":547,
				"text":"平山区"
			},{
				"id":548,
				"text":"溪湖区"
			},{
				"id":549,
				"text":"明山区"
			},{
				"id":550,
				"text":"南芬区"
			},{
				"id":551,
				"text":"本溪满族自治县"
			},{
				"id":552,
				"text":"桓仁满族自治县"
			}]
		},{
			"id":553,
			"text":"丹东市",
			"children":[{
				"id":555,
				"text":"元宝区"
			},{
				"id":556,
				"text":"振兴区"
			},{
				"id":557,
				"text":"振安区"
			},{
				"id":558,
				"text":"宽甸满族自治县"
			},{
				"id":559,
				"text":"东港市"
			},{
				"id":560,
				"text":"凤城市"
			}]
		},{
			"id":561,
			"text":"锦州市",
			"children":[{
				"id":563,
				"text":"古塔区"
			},{
				"id":564,
				"text":"凌河区"
			},{
				"id":565,
				"text":"太和区"
			},{
				"id":566,
				"text":"黑山县"
			},{
				"id":567,
				"text":"义县"
			},{
				"id":568,
				"text":"凌海市"
			},{
				"id":569,
				"text":"北镇市"
			}]
		},{
			"id":570,
			"text":"营口市",
			"children":[{
				"id":572,
				"text":"站前区"
			},{
				"id":573,
				"text":"西市区"
			},{
				"id":574,
				"text":"鲅鱼圈区"
			},{
				"id":575,
				"text":"老边区"
			},{
				"id":576,
				"text":"盖州市"
			},{
				"id":577,
				"text":"大石桥市"
			}]
		},{
			"id":578,
			"text":"阜新市",
			"children":[{
				"id":580,
				"text":"海州区"
			},{
				"id":581,
				"text":"新邱区"
			},{
				"id":582,
				"text":"太平区"
			},{
				"id":583,
				"text":"清河门区"
			},{
				"id":584,
				"text":"细河区"
			},{
				"id":585,
				"text":"阜新蒙古族自治县"
			},{
				"id":586,
				"text":"彰武县"
			}]
		},{
			"id":587,
			"text":"辽阳市",
			"children":[{
				"id":589,
				"text":"白塔区"
			},{
				"id":590,
				"text":"文圣区"
			},{
				"id":591,
				"text":"宏伟区"
			},{
				"id":592,
				"text":"弓长岭区"
			},{
				"id":593,
				"text":"太子河区"
			},{
				"id":594,
				"text":"辽阳县"
			},{
				"id":595,
				"text":"灯塔市"
			}]
		},{
			"id":596,
			"text":"盘锦市",
			"children":[{
				"id":598,
				"text":"双台子区"
			},{
				"id":599,
				"text":"兴隆台区"
			},{
				"id":600,
				"text":"大洼县"
			},{
				"id":601,
				"text":"盘山县"
			}]
		},{
			"id":602,
			"text":"铁岭市",
			"children":[{
				"id":604,
				"text":"银州区"
			},{
				"id":605,
				"text":"清河区"
			},{
				"id":606,
				"text":"铁岭县"
			},{
				"id":607,
				"text":"西丰县"
			},{
				"id":608,
				"text":"昌图县"
			},{
				"id":609,
				"text":"调兵山市"
			},{
				"id":610,
				"text":"开原市"
			}]
		},{
			"id":611,
			"text":"朝阳市",
			"children":[{
				"id":613,
				"text":"双塔区"
			},{
				"id":614,
				"text":"龙城区"
			},{
				"id":615,
				"text":"朝阳县"
			},{
				"id":616,
				"text":"建平县"
			},{
				"id":617,
				"text":"喀喇沁左翼蒙古族自治县"
			},{
				"id":618,
				"text":"北票市"
			},{
				"id":619,
				"text":"凌源市"
			}]
		},{
			"id":620,
			"text":"葫芦岛市",
			"children":[{
				"id":622,
				"text":"连山区"
			},{
				"id":623,
				"text":"龙港区"
			},{
				"id":624,
				"text":"南票区"
			},{
				"id":625,
				"text":"绥中县"
			},{
				"id":626,
				"text":"建昌县"
			},{
				"id":627,
				"text":"兴城市"
			}]
		}]
	},{
		"id":628,
		"text":"吉林省",
		"children":[{
			"id":629,
			"text":"长春市",
			"children":[{
				"id":631,
				"text":"南关区"
			},{
				"id":632,
				"text":"宽城区"
			},{
				"id":633,
				"text":"朝阳区"
			},{
				"id":634,
				"text":"二道区"
			},{
				"id":635,
				"text":"绿园区"
			},{
				"id":636,
				"text":"双阳区"
			},{
				"id":637,
				"text":"农安县"
			},{
				"id":638,
				"text":"九台市"
			},{
				"id":639,
				"text":"榆树市"
			},{
				"id":640,
				"text":"德惠市"
			}]
		},{
			"id":641,
			"text":"吉林市",
			"children":[{
				"id":643,
				"text":"昌邑区"
			},{
				"id":644,
				"text":"龙潭区"
			},{
				"id":645,
				"text":"船营区"
			},{
				"id":646,
				"text":"丰满区"
			},{
				"id":647,
				"text":"永吉县"
			},{
				"id":648,
				"text":"蛟河市"
			},{
				"id":649,
				"text":"桦甸市"
			},{
				"id":650,
				"text":"舒兰市"
			},{
				"id":651,
				"text":"磐石市"
			}]
		},{
			"id":652,
			"text":"四平市",
			"children":[{
				"id":654,
				"text":"铁西区"
			},{
				"id":655,
				"text":"铁东区"
			},{
				"id":656,
				"text":"梨树县"
			},{
				"id":657,
				"text":"伊通满族自治县"
			},{
				"id":658,
				"text":"公主岭市"
			},{
				"id":659,
				"text":"双辽市"
			}]
		},{
			"id":660,
			"text":"辽源市",
			"children":[{
				"id":662,
				"text":"龙山区"
			},{
				"id":663,
				"text":"西安区"
			},{
				"id":664,
				"text":"东丰县"
			},{
				"id":665,
				"text":"东辽县"
			}]
		},{
			"id":666,
			"text":"通化市",
			"children":[{
				"id":668,
				"text":"东昌区"
			},{
				"id":669,
				"text":"二道江区"
			},{
				"id":670,
				"text":"通化县"
			},{
				"id":671,
				"text":"辉南县"
			},{
				"id":672,
				"text":"柳河县"
			},{
				"id":673,
				"text":"梅河口市"
			},{
				"id":674,
				"text":"集安市"
			}]
		},{
			"id":675,
			"text":"白山市",
			"children":[{
				"id":677,
				"text":"八道江区"
			},{
				"id":678,
				"text":"江源区"
			},{
				"id":679,
				"text":"抚松县"
			},{
				"id":680,
				"text":"靖宇县"
			},{
				"id":681,
				"text":"长白朝鲜族自治县"
			},{
				"id":682,
				"text":"临江市"
			}]
		},{
			"id":683,
			"text":"松原市",
			"children":[{
				"id":685,
				"text":"宁江区"
			},{
				"id":686,
				"text":"前郭尔罗斯蒙古族自治县"
			},{
				"id":687,
				"text":"长岭县"
			},{
				"id":688,
				"text":"乾安县"
			},{
				"id":689,
				"text":"扶余县"
			}]
		},{
			"id":690,
			"text":"白城市",
			"children":[{
				"id":692,
				"text":"洮北区"
			},{
				"id":693,
				"text":"镇赉县"
			},{
				"id":694,
				"text":"通榆县"
			},{
				"id":695,
				"text":"洮南市"
			},{
				"id":696,
				"text":"大安市"
			}]
		},{
			"id":697,
			"text":"延边朝鲜族自治州",
			"children":[{
				"id":698,
				"text":"延吉市"
			},{
				"id":699,
				"text":"图们市"
			},{
				"id":700,
				"text":"敦化市"
			},{
				"id":701,
				"text":"珲春市"
			},{
				"id":702,
				"text":"龙井市"
			},{
				"id":703,
				"text":"和龙市"
			},{
				"id":704,
				"text":"汪清县"
			},{
				"id":705,
				"text":"安图县"
			}]
		}]
	},{
		"id":706,
		"text":"黑龙江省",
		"children":[{
			"id":707,
			"text":"哈尔滨市",
			"children":[{
				"id":709,
				"text":"道里区"
			},{
				"id":710,
				"text":"南岗区"
			},{
				"id":711,
				"text":"道外区"
			},{
				"id":712,
				"text":"平房区"
			},{
				"id":713,
				"text":"松北区"
			},{
				"id":714,
				"text":"香坊区"
			},{
				"id":715,
				"text":"呼兰区"
			},{
				"id":716,
				"text":"阿城区"
			},{
				"id":717,
				"text":"依兰县"
			},{
				"id":718,
				"text":"方正县"
			},{
				"id":719,
				"text":"宾县"
			},{
				"id":720,
				"text":"巴彦县"
			},{
				"id":721,
				"text":"木兰县"
			},{
				"id":722,
				"text":"通河县"
			},{
				"id":723,
				"text":"延寿县"
			},{
				"id":724,
				"text":"双城市"
			},{
				"id":725,
				"text":"尚志市"
			},{
				"id":726,
				"text":"五常市"
			}]
		},{
			"id":727,
			"text":"齐齐哈尔市",
			"children":[{
				"id":729,
				"text":"龙沙区"
			},{
				"id":730,
				"text":"建华区"
			},{
				"id":731,
				"text":"铁锋区"
			},{
				"id":732,
				"text":"昂昂溪区"
			},{
				"id":733,
				"text":"富拉尔基区"
			},{
				"id":734,
				"text":"碾子山区"
			},{
				"id":735,
				"text":"梅里斯达斡尔族区"
			},{
				"id":736,
				"text":"龙江县"
			},{
				"id":737,
				"text":"依安县"
			},{
				"id":738,
				"text":"泰来县"
			},{
				"id":739,
				"text":"甘南县"
			},{
				"id":740,
				"text":"富裕县"
			},{
				"id":741,
				"text":"克山县"
			},{
				"id":742,
				"text":"克东县"
			},{
				"id":743,
				"text":"拜泉县"
			},{
				"id":744,
				"text":"讷河市"
			}]
		},{
			"id":745,
			"text":"鸡西市",
			"children":[{
				"id":747,
				"text":"鸡冠区"
			},{
				"id":748,
				"text":"恒山区"
			},{
				"id":749,
				"text":"滴道区"
			},{
				"id":750,
				"text":"梨树区"
			},{
				"id":751,
				"text":"城子河区"
			},{
				"id":752,
				"text":"麻山区"
			},{
				"id":753,
				"text":"鸡东县"
			},{
				"id":754,
				"text":"虎林市"
			},{
				"id":755,
				"text":"密山市"
			}]
		},{
			"id":756,
			"text":"鹤岗市",
			"children":[{
				"id":758,
				"text":"向阳区"
			},{
				"id":759,
				"text":"工农区"
			},{
				"id":760,
				"text":"南山区"
			},{
				"id":761,
				"text":"兴安区"
			},{
				"id":762,
				"text":"东山区"
			},{
				"id":763,
				"text":"兴山区"
			},{
				"id":764,
				"text":"萝北县"
			},{
				"id":765,
				"text":"绥滨县"
			}]
		},{
			"id":766,
			"text":"双鸭山市",
			"children":[{
				"id":768,
				"text":"尖山区"
			},{
				"id":769,
				"text":"岭东区"
			},{
				"id":770,
				"text":"四方台区"
			},{
				"id":771,
				"text":"宝山区"
			},{
				"id":772,
				"text":"集贤县"
			},{
				"id":773,
				"text":"友谊县"
			},{
				"id":774,
				"text":"宝清县"
			},{
				"id":775,
				"text":"饶河县"
			}]
		},{
			"id":776,
			"text":"大庆市",
			"children":[{
				"id":778,
				"text":"萨尔图区"
			},{
				"id":779,
				"text":"龙凤区"
			},{
				"id":780,
				"text":"让胡路区"
			},{
				"id":781,
				"text":"红岗区"
			},{
				"id":782,
				"text":"大同区"
			},{
				"id":783,
				"text":"肇州县"
			},{
				"id":784,
				"text":"肇源县"
			},{
				"id":785,
				"text":"林甸县"
			},{
				"id":786,
				"text":"杜尔伯特蒙古族自治县"
			}]
		},{
			"id":787,
			"text":"伊春市",
			"children":[{
				"id":789,
				"text":"伊春区"
			},{
				"id":790,
				"text":"南岔区"
			},{
				"id":791,
				"text":"友好区"
			},{
				"id":792,
				"text":"西林区"
			},{
				"id":793,
				"text":"翠峦区"
			},{
				"id":794,
				"text":"新青区"
			},{
				"id":795,
				"text":"美溪区"
			},{
				"id":796,
				"text":"金山屯区"
			},{
				"id":797,
				"text":"五营区"
			},{
				"id":798,
				"text":"乌马河区"
			},{
				"id":799,
				"text":"汤旺河区"
			},{
				"id":800,
				"text":"带岭区"
			},{
				"id":801,
				"text":"乌伊岭区"
			},{
				"id":802,
				"text":"红星区"
			},{
				"id":803,
				"text":"上甘岭区"
			},{
				"id":804,
				"text":"嘉荫县"
			},{
				"id":805,
				"text":"铁力市"
			}]
		},{
			"id":806,
			"text":"佳木斯市",
			"children":[{
				"id":808,
				"text":"向阳区"
			},{
				"id":809,
				"text":"前进区"
			},{
				"id":810,
				"text":"东风区"
			},{
				"id":811,
				"text":"郊区"
			},{
				"id":812,
				"text":"桦南县"
			},{
				"id":813,
				"text":"桦川县"
			},{
				"id":814,
				"text":"汤原县"
			},{
				"id":815,
				"text":"抚远县"
			},{
				"id":816,
				"text":"同江市"
			},{
				"id":817,
				"text":"富锦市"
			}]
		},{
			"id":818,
			"text":"七台河市",
			"children":[{
				"id":820,
				"text":"新兴区"
			},{
				"id":821,
				"text":"桃山区"
			},{
				"id":822,
				"text":"茄子河区"
			},{
				"id":823,
				"text":"勃利县"
			}]
		},{
			"id":824,
			"text":"牡丹江市",
			"children":[{
				"id":826,
				"text":"东安区"
			},{
				"id":827,
				"text":"阳明区"
			},{
				"id":828,
				"text":"爱民区"
			},{
				"id":829,
				"text":"西安区"
			},{
				"id":830,
				"text":"东宁县"
			},{
				"id":831,
				"text":"林口县"
			},{
				"id":832,
				"text":"绥芬河市"
			},{
				"id":833,
				"text":"海林市"
			},{
				"id":834,
				"text":"宁安市"
			},{
				"id":835,
				"text":"穆棱市"
			}]
		},{
			"id":836,
			"text":"黑河市",
			"children":[{
				"id":838,
				"text":"爱辉区"
			},{
				"id":839,
				"text":"嫩江县"
			},{
				"id":840,
				"text":"逊克县"
			},{
				"id":841,
				"text":"孙吴县"
			},{
				"id":842,
				"text":"北安市"
			},{
				"id":843,
				"text":"五大连池市"
			}]
		},{
			"id":844,
			"text":"绥化市",
			"children":[{
				"id":846,
				"text":"北林区"
			},{
				"id":847,
				"text":"望奎县"
			},{
				"id":848,
				"text":"兰西县"
			},{
				"id":849,
				"text":"青冈县"
			},{
				"id":850,
				"text":"庆安县"
			},{
				"id":851,
				"text":"明水县"
			},{
				"id":852,
				"text":"绥棱县"
			},{
				"id":853,
				"text":"安达市"
			},{
				"id":854,
				"text":"肇东市"
			},{
				"id":855,
				"text":"海伦市"
			}]
		},{
			"id":856,
			"text":"大兴安岭地区",
			"children":[{
				"id":857,
				"text":"加格达奇区"
			},{
				"id":858,
				"text":"松岭区"
			},{
				"id":859,
				"text":"新林区"
			},{
				"id":860,
				"text":"呼中区"
			},{
				"id":861,
				"text":"呼玛县"
			},{
				"id":862,
				"text":"塔河县"
			},{
				"id":863,
				"text":"漠河县"
			}]
		}]
	},{
		"id":864,
		"text":"上海市",
		"children":[{
			"id":866,
			"text":"黄浦区"
		},{
			"id":867,
			"text":"卢湾区"
		},{
			"id":868,
			"text":"徐汇区"
		},{
			"id":869,
			"text":"长宁区"
		},{
			"id":870,
			"text":"静安区"
		},{
			"id":871,
			"text":"普陀区"
		},{
			"id":872,
			"text":"闸北区"
		},{
			"id":873,
			"text":"虹口区"
		},{
			"id":874,
			"text":"杨浦区"
		},{
			"id":875,
			"text":"闵行区"
		},{
			"id":876,
			"text":"宝山区"
		},{
			"id":877,
			"text":"嘉定区"
		},{
			"id":878,
			"text":"浦东新区"
		},{
			"id":879,
			"text":"金山区"
		},{
			"id":880,
			"text":"松江区"
		},{
			"id":881,
			"text":"青浦区"
		},{
			"id":882,
			"text":"奉贤区"
		},{
			"id":884,
			"text":"崇明县"
		}]
	},{
		"id":885,
		"text":"江苏省",
		"children":[{
			"id":886,
			"text":"南京市",
			"children":[{
				"id":888,
				"text":"玄武区"
			},{
				"id":889,
				"text":"白下区"
			},{
				"id":890,
				"text":"秦淮区"
			},{
				"id":891,
				"text":"建邺区"
			},{
				"id":892,
				"text":"鼓楼区"
			},{
				"id":893,
				"text":"下关区"
			},{
				"id":894,
				"text":"浦口区"
			},{
				"id":895,
				"text":"栖霞区"
			},{
				"id":896,
				"text":"雨花台区"
			},{
				"id":897,
				"text":"江宁区"
			},{
				"id":898,
				"text":"六合区"
			},{
				"id":899,
				"text":"溧水县"
			},{
				"id":900,
				"text":"高淳县"
			}]
		},{
			"id":901,
			"text":"无锡市",
			"children":[{
				"id":903,
				"text":"崇安区"
			},{
				"id":904,
				"text":"南长区"
			},{
				"id":905,
				"text":"北塘区"
			},{
				"id":906,
				"text":"锡山区"
			},{
				"id":907,
				"text":"惠山区"
			},{
				"id":908,
				"text":"滨湖区"
			},{
				"id":909,
				"text":"江阴市"
			},{
				"id":910,
				"text":"宜兴市"
			}]
		},{
			"id":911,
			"text":"徐州市",
			"children":[{
				"id":913,
				"text":"鼓楼区"
			},{
				"id":914,
				"text":"云龙区"
			},{
				"id":915,
				"text":"贾汪区"
			},{
				"id":916,
				"text":"泉山区"
			},{
				"id":917,
				"text":"铜山区"
			},{
				"id":918,
				"text":"丰县"
			},{
				"id":919,
				"text":"沛县"
			},{
				"id":920,
				"text":"睢宁县"
			},{
				"id":921,
				"text":"新沂市"
			},{
				"id":922,
				"text":"邳州市"
			}]
		},{
			"id":923,
			"text":"常州市",
			"children":[{
				"id":925,
				"text":"天宁区"
			},{
				"id":926,
				"text":"钟楼区"
			},{
				"id":927,
				"text":"戚墅堰区"
			},{
				"id":928,
				"text":"新北区"
			},{
				"id":929,
				"text":"武进区"
			},{
				"id":930,
				"text":"溧阳市"
			},{
				"id":931,
				"text":"金坛市"
			}]
		},{
			"id":932,
			"text":"苏州市",
			"children":[{
				"id":934,
				"text":"沧浪区"
			},{
				"id":935,
				"text":"平江区"
			},{
				"id":936,
				"text":"金阊区"
			},{
				"id":937,
				"text":"虎丘区"
			},{
				"id":938,
				"text":"吴中区"
			},{
				"id":939,
				"text":"相城区"
			},{
				"id":940,
				"text":"常熟市"
			},{
				"id":941,
				"text":"张家港市"
			},{
				"id":942,
				"text":"昆山市"
			},{
				"id":943,
				"text":"吴江市"
			},{
				"id":944,
				"text":"太仓市"
			}]
		},{
			"id":945,
			"text":"南通市",
			"children":[{
				"id":947,
				"text":"崇川区"
			},{
				"id":948,
				"text":"港闸区"
			},{
				"id":949,
				"text":"通州区"
			},{
				"id":950,
				"text":"海安县"
			},{
				"id":951,
				"text":"如东县"
			},{
				"id":952,
				"text":"启东市"
			},{
				"id":953,
				"text":"如皋市"
			},{
				"id":954,
				"text":"海门市"
			}]
		},{
			"id":955,
			"text":"连云港市",
			"children":[{
				"id":957,
				"text":"连云区"
			},{
				"id":958,
				"text":"新浦区"
			},{
				"id":959,
				"text":"海州区"
			},{
				"id":960,
				"text":"赣榆县"
			},{
				"id":961,
				"text":"东海县"
			},{
				"id":962,
				"text":"灌云县"
			},{
				"id":963,
				"text":"灌南县"
			}]
		},{
			"id":964,
			"text":"淮安市",
			"children":[{
				"id":966,
				"text":"清河区"
			},{
				"id":967,
				"text":"楚州区"
			},{
				"id":968,
				"text":"淮阴区"
			},{
				"id":969,
				"text":"清浦区"
			},{
				"id":970,
				"text":"涟水县"
			},{
				"id":971,
				"text":"洪泽县"
			},{
				"id":972,
				"text":"盱眙县"
			},{
				"id":973,
				"text":"金湖县"
			}]
		},{
			"id":974,
			"text":"盐城市",
			"children":[{
				"id":976,
				"text":"亭湖区"
			},{
				"id":977,
				"text":"盐都区"
			},{
				"id":978,
				"text":"响水县"
			},{
				"id":979,
				"text":"滨海县"
			},{
				"id":980,
				"text":"阜宁县"
			},{
				"id":981,
				"text":"射阳县"
			},{
				"id":982,
				"text":"建湖县"
			},{
				"id":983,
				"text":"东台市"
			},{
				"id":984,
				"text":"大丰市"
			}]
		},{
			"id":985,
			"text":"扬州市",
			"children":[{
				"id":987,
				"text":"广陵区"
			},{
				"id":988,
				"text":"邗江区"
			},{
				"id":989,
				"text":"维扬区"
			},{
				"id":990,
				"text":"宝应县"
			},{
				"id":991,
				"text":"仪征市"
			},{
				"id":992,
				"text":"高邮市"
			},{
				"id":993,
				"text":"江都市"
			}]
		},{
			"id":994,
			"text":"镇江市",
			"children":[{
				"id":996,
				"text":"京口区"
			},{
				"id":997,
				"text":"润州区"
			},{
				"id":998,
				"text":"丹徒区"
			},{
				"id":999,
				"text":"丹阳市"
			},{
				"id":1000,
				"text":"扬中市"
			},{
				"id":1001,
				"text":"句容市"
			}]
		},{
			"id":1002,
			"text":"泰州市",
			"children":[{
				"id":1004,
				"text":"海陵区"
			},{
				"id":1005,
				"text":"高港区"
			},{
				"id":1006,
				"text":"兴化市"
			},{
				"id":1007,
				"text":"靖江市"
			},{
				"id":1008,
				"text":"泰兴市"
			},{
				"id":1009,
				"text":"姜堰市"
			}]
		},{
			"id":1010,
			"text":"宿迁市",
			"children":[{
				"id":1012,
				"text":"宿城区"
			},{
				"id":1013,
				"text":"宿豫区"
			},{
				"id":1014,
				"text":"沭阳县"
			},{
				"id":1015,
				"text":"泗阳县"
			},{
				"id":1016,
				"text":"泗洪县"
			}]
		}]
	},{
		"id":1017,
		"text":"浙江省",
		"children":[{
			"id":1018,
			"text":"杭州市",
			"children":[{
				"id":1020,
				"text":"上城区"
			},{
				"id":1021,
				"text":"下城区"
			},{
				"id":1022,
				"text":"江干区"
			},{
				"id":1023,
				"text":"拱墅区"
			},{
				"id":1024,
				"text":"西湖区"
			},{
				"id":1025,
				"text":"滨江区"
			},{
				"id":1026,
				"text":"萧山区"
			},{
				"id":1027,
				"text":"余杭区"
			},{
				"id":1028,
				"text":"桐庐县"
			},{
				"id":1029,
				"text":"淳安县"
			},{
				"id":1030,
				"text":"建德市"
			},{
				"id":1031,
				"text":"富阳市"
			},{
				"id":1032,
				"text":"临安市"
			}]
		},{
			"id":1033,
			"text":"宁波市",
			"children":[{
				"id":1035,
				"text":"海曙区"
			},{
				"id":1036,
				"text":"江东区"
			},{
				"id":1037,
				"text":"江北区"
			},{
				"id":1038,
				"text":"北仑区"
			},{
				"id":1039,
				"text":"镇海区"
			},{
				"id":1040,
				"text":"鄞州区"
			},{
				"id":1041,
				"text":"象山县"
			},{
				"id":1042,
				"text":"宁海县"
			},{
				"id":1043,
				"text":"余姚市"
			},{
				"id":1044,
				"text":"慈溪市"
			},{
				"id":1045,
				"text":"奉化市"
			}]
		},{
			"id":1046,
			"text":"温州市",
			"children":[{
				"id":1048,
				"text":"鹿城区"
			},{
				"id":1049,
				"text":"龙湾区"
			},{
				"id":1050,
				"text":"瓯海区"
			},{
				"id":1051,
				"text":"洞头县"
			},{
				"id":1052,
				"text":"永嘉县"
			},{
				"id":1053,
				"text":"平阳县"
			},{
				"id":1054,
				"text":"苍南县"
			},{
				"id":1055,
				"text":"文成县"
			},{
				"id":1056,
				"text":"泰顺县"
			},{
				"id":1057,
				"text":"瑞安市"
			},{
				"id":1058,
				"text":"乐清市"
			}]
		},{
			"id":1059,
			"text":"嘉兴市",
			"children":[{
				"id":1061,
				"text":"南湖区"
			},{
				"id":1062,
				"text":"秀洲区"
			},{
				"id":1063,
				"text":"嘉善县"
			},{
				"id":1064,
				"text":"海盐县"
			},{
				"id":1065,
				"text":"海宁市"
			},{
				"id":1066,
				"text":"平湖市"
			},{
				"id":1067,
				"text":"桐乡市"
			}]
		},{
			"id":1068,
			"text":"湖州市",
			"children":[{
				"id":1070,
				"text":"吴兴区"
			},{
				"id":1071,
				"text":"南浔区"
			},{
				"id":1072,
				"text":"德清县"
			},{
				"id":1073,
				"text":"长兴县"
			},{
				"id":1074,
				"text":"安吉县"
			}]
		},{
			"id":1075,
			"text":"绍兴市",
			"children":[{
				"id":1077,
				"text":"越城区"
			},{
				"id":1078,
				"text":"绍兴县"
			},{
				"id":1079,
				"text":"新昌县"
			},{
				"id":1080,
				"text":"诸暨市"
			},{
				"id":1081,
				"text":"上虞市"
			},{
				"id":1082,
				"text":"嵊州市"
			}]
		},{
			"id":1083,
			"text":"金华市",
			"children":[{
				"id":1085,
				"text":"婺城区"
			},{
				"id":1086,
				"text":"金东区"
			},{
				"id":1087,
				"text":"武义县"
			},{
				"id":1088,
				"text":"浦江县"
			},{
				"id":1089,
				"text":"磐安县"
			},{
				"id":1090,
				"text":"兰溪市"
			},{
				"id":1091,
				"text":"义乌市"
			},{
				"id":1092,
				"text":"东阳市"
			},{
				"id":1093,
				"text":"永康市"
			}]
		},{
			"id":1094,
			"text":"衢州市",
			"children":[{
				"id":1096,
				"text":"柯城区"
			},{
				"id":1097,
				"text":"衢江区"
			},{
				"id":1098,
				"text":"常山县"
			},{
				"id":1099,
				"text":"开化县"
			},{
				"id":1100,
				"text":"龙游县"
			},{
				"id":1101,
				"text":"江山市"
			}]
		},{
			"id":1102,
			"text":"舟山市",
			"children":[{
				"id":1104,
				"text":"定海区"
			},{
				"id":1105,
				"text":"普陀区"
			},{
				"id":1106,
				"text":"岱山县"
			},{
				"id":1107,
				"text":"嵊泗县"
			}]
		},{
			"id":1108,
			"text":"台州市",
			"children":[{
				"id":1110,
				"text":"椒江区"
			},{
				"id":1111,
				"text":"黄岩区"
			},{
				"id":1112,
				"text":"路桥区"
			},{
				"id":1113,
				"text":"玉环县"
			},{
				"id":1114,
				"text":"三门县"
			},{
				"id":1115,
				"text":"天台县"
			},{
				"id":1116,
				"text":"仙居县"
			},{
				"id":1117,
				"text":"温岭市"
			},{
				"id":1118,
				"text":"临海市"
			}]
		},{
			"id":1119,
			"text":"丽水市",
			"children":[{
				"id":1121,
				"text":"莲都区"
			},{
				"id":1122,
				"text":"青田县"
			},{
				"id":1123,
				"text":"缙云县"
			},{
				"id":1124,
				"text":"遂昌县"
			},{
				"id":1125,
				"text":"松阳县"
			},{
				"id":1126,
				"text":"云和县"
			},{
				"id":1127,
				"text":"庆元县"
			},{
				"id":1128,
				"text":"景宁畲族自治县"
			},{
				"id":1129,
				"text":"龙泉市"
			}]
		}]
	},{
		"id":1130,
		"text":"安徽省",
		"children":[{
			"id":1131,
			"text":"合肥市",
			"children":[{
				"id":1133,
				"text":"瑶海区"
			},{
				"id":1134,
				"text":"庐阳区"
			},{
				"id":1135,
				"text":"蜀山区"
			},{
				"id":1136,
				"text":"包河区"
			},{
				"id":1137,
				"text":"长丰县"
			},{
				"id":1138,
				"text":"肥东县"
			},{
				"id":1139,
				"text":"肥西县"
			}]
		},{
			"id":1140,
			"text":"芜湖市",
			"children":[{
				"id":1142,
				"text":"镜湖区"
			},{
				"id":1143,
				"text":"弋江区"
			},{
				"id":1144,
				"text":"鸠江区"
			},{
				"id":1145,
				"text":"三山区"
			},{
				"id":1146,
				"text":"芜湖县"
			},{
				"id":1147,
				"text":"繁昌县"
			},{
				"id":1148,
				"text":"南陵县"
			}]
		},{
			"id":1149,
			"text":"蚌埠市",
			"children":[{
				"id":1151,
				"text":"龙子湖区"
			},{
				"id":1152,
				"text":"蚌山区"
			},{
				"id":1153,
				"text":"禹会区"
			},{
				"id":1154,
				"text":"淮上区"
			},{
				"id":1155,
				"text":"怀远县"
			},{
				"id":1156,
				"text":"五河县"
			},{
				"id":1157,
				"text":"固镇县"
			}]
		},{
			"id":1158,
			"text":"淮南市",
			"children":[{
				"id":1160,
				"text":"大通区"
			},{
				"id":1161,
				"text":"田家庵区"
			},{
				"id":1162,
				"text":"谢家集区"
			},{
				"id":1163,
				"text":"八公山区"
			},{
				"id":1164,
				"text":"潘集区"
			},{
				"id":1165,
				"text":"凤台县"
			}]
		},{
			"id":1166,
			"text":"马鞍山市",
			"children":[{
				"id":1168,
				"text":"金家庄区"
			},{
				"id":1169,
				"text":"花山区"
			},{
				"id":1170,
				"text":"雨山区"
			},{
				"id":1171,
				"text":"当涂县"
			}]
		},{
			"id":1172,
			"text":"淮北市",
			"children":[{
				"id":1174,
				"text":"杜集区"
			},{
				"id":1175,
				"text":"相山区"
			},{
				"id":1176,
				"text":"烈山区"
			},{
				"id":1177,
				"text":"濉溪县"
			}]
		},{
			"id":1178,
			"text":"铜陵市",
			"children":[{
				"id":1180,
				"text":"铜官山区"
			},{
				"id":1181,
				"text":"狮子山区"
			},{
				"id":1182,
				"text":"郊区"
			},{
				"id":1183,
				"text":"铜陵县"
			}]
		},{
			"id":1184,
			"text":"安庆市",
			"children":[{
				"id":1186,
				"text":"迎江区"
			},{
				"id":1187,
				"text":"大观区"
			},{
				"id":1188,
				"text":"宜秀区"
			},{
				"id":1189,
				"text":"怀宁县"
			},{
				"id":1190,
				"text":"枞阳县"
			},{
				"id":1191,
				"text":"潜山县"
			},{
				"id":1192,
				"text":"太湖县"
			},{
				"id":1193,
				"text":"宿松县"
			},{
				"id":1194,
				"text":"望江县"
			},{
				"id":1195,
				"text":"岳西县"
			},{
				"id":1196,
				"text":"桐城市"
			}]
		},{
			"id":1197,
			"text":"黄山市",
			"children":[{
				"id":1199,
				"text":"屯溪区"
			},{
				"id":1200,
				"text":"黄山区"
			},{
				"id":1201,
				"text":"徽州区"
			},{
				"id":1202,
				"text":"歙县"
			},{
				"id":1203,
				"text":"休宁县"
			},{
				"id":1204,
				"text":"黟县"
			},{
				"id":1205,
				"text":"祁门县"
			}]
		},{
			"id":1206,
			"text":"滁州市",
			"children":[{
				"id":1208,
				"text":"琅琊区"
			},{
				"id":1209,
				"text":"南谯区"
			},{
				"id":1210,
				"text":"来安县"
			},{
				"id":1211,
				"text":"全椒县"
			},{
				"id":1212,
				"text":"定远县"
			},{
				"id":1213,
				"text":"凤阳县"
			},{
				"id":1214,
				"text":"天长市"
			},{
				"id":1215,
				"text":"明光市"
			}]
		},{
			"id":1216,
			"text":"阜阳市",
			"children":[{
				"id":1218,
				"text":"颍州区"
			},{
				"id":1219,
				"text":"颍东区"
			},{
				"id":1220,
				"text":"颍泉区"
			},{
				"id":1221,
				"text":"临泉县"
			},{
				"id":1222,
				"text":"太和县"
			},{
				"id":1223,
				"text":"阜南县"
			},{
				"id":1224,
				"text":"颍上县"
			},{
				"id":1225,
				"text":"界首市"
			}]
		},{
			"id":1226,
			"text":"宿州市",
			"children":[{
				"id":1228,
				"text":"埇桥区"
			},{
				"id":1229,
				"text":"砀山县"
			},{
				"id":1230,
				"text":"萧县"
			},{
				"id":1231,
				"text":"灵璧县"
			},{
				"id":1232,
				"text":"泗县"
			}]
		},{
			"id":1233,
			"text":"巢湖市",
			"children":[{
				"id":1235,
				"text":"居巢区"
			},{
				"id":1236,
				"text":"庐江县"
			},{
				"id":1237,
				"text":"无为县"
			},{
				"id":1238,
				"text":"含山县"
			},{
				"id":1239,
				"text":"和县"
			}]
		},{
			"id":1240,
			"text":"六安市",
			"children":[{
				"id":1242,
				"text":"金安区"
			},{
				"id":1243,
				"text":"裕安区"
			},{
				"id":1244,
				"text":"寿县"
			},{
				"id":1245,
				"text":"霍邱县"
			},{
				"id":1246,
				"text":"舒城县"
			},{
				"id":1247,
				"text":"金寨县"
			},{
				"id":1248,
				"text":"霍山县"
			}]
		},{
			"id":1249,
			"text":"亳州市",
			"children":[{
				"id":1251,
				"text":"谯城区"
			},{
				"id":1252,
				"text":"涡阳县"
			},{
				"id":1253,
				"text":"蒙城县"
			},{
				"id":1254,
				"text":"利辛县"
			}]
		},{
			"id":1255,
			"text":"池州市",
			"children":[{
				"id":1257,
				"text":"贵池区"
			},{
				"id":1258,
				"text":"东至县"
			},{
				"id":1259,
				"text":"石台县"
			},{
				"id":1260,
				"text":"青阳县"
			}]
		},{
			"id":1261,
			"text":"宣城市",
			"children":[{
				"id":1263,
				"text":"宣州区"
			},{
				"id":1264,
				"text":"郎溪县"
			},{
				"id":1265,
				"text":"广德县"
			},{
				"id":1266,
				"text":"泾县"
			},{
				"id":1267,
				"text":"绩溪县"
			},{
				"id":1268,
				"text":"旌德县"
			},{
				"id":1269,
				"text":"宁国市"
			}]
		}]
	},{
		"id":1270,
		"text":"福建省",
		"children":[{
			"id":1271,
			"text":"福州市",
			"children":[{
				"id":1273,
				"text":"鼓楼区"
			},{
				"id":1274,
				"text":"台江区"
			},{
				"id":1275,
				"text":"仓山区"
			},{
				"id":1276,
				"text":"马尾区"
			},{
				"id":1277,
				"text":"晋安区"
			},{
				"id":1278,
				"text":"闽侯县"
			},{
				"id":1279,
				"text":"连江县"
			},{
				"id":1280,
				"text":"罗源县"
			},{
				"id":1281,
				"text":"闽清县"
			},{
				"id":1282,
				"text":"永泰县"
			},{
				"id":1283,
				"text":"平潭县"
			},{
				"id":1284,
				"text":"福清市"
			},{
				"id":1285,
				"text":"长乐市"
			}]
		},{
			"id":1286,
			"text":"厦门市",
			"children":[{
				"id":1288,
				"text":"思明区"
			},{
				"id":1289,
				"text":"海沧区"
			},{
				"id":1290,
				"text":"湖里区"
			},{
				"id":1291,
				"text":"集美区"
			},{
				"id":1292,
				"text":"同安区"
			},{
				"id":1293,
				"text":"翔安区"
			}]
		},{
			"id":1294,
			"text":"莆田市",
			"children":[{
				"id":1296,
				"text":"城厢区"
			},{
				"id":1297,
				"text":"涵江区"
			},{
				"id":1298,
				"text":"荔城区"
			},{
				"id":1299,
				"text":"秀屿区"
			},{
				"id":1300,
				"text":"仙游县"
			}]
		},{
			"id":1301,
			"text":"三明市",
			"children":[{
				"id":1303,
				"text":"梅列区"
			},{
				"id":1304,
				"text":"三元区"
			},{
				"id":1305,
				"text":"明溪县"
			},{
				"id":1306,
				"text":"清流县"
			},{
				"id":1307,
				"text":"宁化县"
			},{
				"id":1308,
				"text":"大田县"
			},{
				"id":1309,
				"text":"尤溪县"
			},{
				"id":1310,
				"text":"沙县"
			},{
				"id":1311,
				"text":"将乐县"
			},{
				"id":1312,
				"text":"泰宁县"
			},{
				"id":1313,
				"text":"建宁县"
			},{
				"id":1314,
				"text":"永安市"
			}]
		},{
			"id":1315,
			"text":"泉州市",
			"children":[{
				"id":1317,
				"text":"鲤城区"
			},{
				"id":1318,
				"text":"丰泽区"
			},{
				"id":1319,
				"text":"洛江区"
			},{
				"id":1320,
				"text":"泉港区"
			},{
				"id":1321,
				"text":"惠安县"
			},{
				"id":1322,
				"text":"安溪县"
			},{
				"id":1323,
				"text":"永春县"
			},{
				"id":1324,
				"text":"德化县"
			},{
				"id":1325,
				"text":"金门县"
			},{
				"id":1326,
				"text":"石狮市"
			},{
				"id":1327,
				"text":"晋江市"
			},{
				"id":1328,
				"text":"南安市"
			}]
		},{
			"id":1329,
			"text":"漳州市",
			"children":[{
				"id":1331,
				"text":"芗城区"
			},{
				"id":1332,
				"text":"龙文区"
			},{
				"id":1333,
				"text":"云霄县"
			},{
				"id":1334,
				"text":"漳浦县"
			},{
				"id":1335,
				"text":"诏安县"
			},{
				"id":1336,
				"text":"长泰县"
			},{
				"id":1337,
				"text":"东山县"
			},{
				"id":1338,
				"text":"南靖县"
			},{
				"id":1339,
				"text":"平和县"
			},{
				"id":1340,
				"text":"华安县"
			},{
				"id":1341,
				"text":"龙海市"
			}]
		},{
			"id":1342,
			"text":"南平市",
			"children":[{
				"id":1344,
				"text":"延平区"
			},{
				"id":1345,
				"text":"顺昌县"
			},{
				"id":1346,
				"text":"浦城县"
			},{
				"id":1347,
				"text":"光泽县"
			},{
				"id":1348,
				"text":"松溪县"
			},{
				"id":1349,
				"text":"政和县"
			},{
				"id":1350,
				"text":"邵武市"
			},{
				"id":1351,
				"text":"武夷山市"
			},{
				"id":1352,
				"text":"建瓯市"
			},{
				"id":1353,
				"text":"建阳市"
			}]
		},{
			"id":1354,
			"text":"龙岩市",
			"children":[{
				"id":1356,
				"text":"新罗区"
			},{
				"id":1357,
				"text":"长汀县"
			},{
				"id":1358,
				"text":"永定县"
			},{
				"id":1359,
				"text":"上杭县"
			},{
				"id":1360,
				"text":"武平县"
			},{
				"id":1361,
				"text":"连城县"
			},{
				"id":1362,
				"text":"漳平市"
			}]
		},{
			"id":1363,
			"text":"宁德市",
			"children":[{
				"id":1365,
				"text":"蕉城区"
			},{
				"id":1366,
				"text":"霞浦县"
			},{
				"id":1367,
				"text":"古田县"
			},{
				"id":1368,
				"text":"屏南县"
			},{
				"id":1369,
				"text":"寿宁县"
			},{
				"id":1370,
				"text":"周宁县"
			},{
				"id":1371,
				"text":"柘荣县"
			},{
				"id":1372,
				"text":"福安市"
			},{
				"id":1373,
				"text":"福鼎市"
			}]
		}]
	},{
		"id":1374,
		"text":"江西省",
		"children":[{
			"id":1375,
			"text":"南昌市",
			"children":[{
				"id":1377,
				"text":"东湖区"
			},{
				"id":1378,
				"text":"西湖区"
			},{
				"id":1379,
				"text":"青云谱区"
			},{
				"id":1380,
				"text":"湾里区"
			},{
				"id":1381,
				"text":"青山湖区"
			},{
				"id":1382,
				"text":"南昌县"
			},{
				"id":1383,
				"text":"新建县"
			},{
				"id":1384,
				"text":"安义县"
			},{
				"id":1385,
				"text":"进贤县"
			}]
		},{
			"id":1386,
			"text":"景德镇市",
			"children":[{
				"id":1388,
				"text":"昌江区"
			},{
				"id":1389,
				"text":"珠山区"
			},{
				"id":1390,
				"text":"浮梁县"
			},{
				"id":1391,
				"text":"乐平市"
			}]
		},{
			"id":1392,
			"text":"萍乡市",
			"children":[{
				"id":1394,
				"text":"安源区"
			},{
				"id":1395,
				"text":"湘东区"
			},{
				"id":1396,
				"text":"莲花县"
			},{
				"id":1397,
				"text":"上栗县"
			},{
				"id":1398,
				"text":"芦溪县"
			}]
		},{
			"id":1399,
			"text":"九江市",
			"children":[{
				"id":1401,
				"text":"庐山区"
			},{
				"id":1402,
				"text":"浔阳区"
			},{
				"id":1403,
				"text":"九江县"
			},{
				"id":1404,
				"text":"武宁县"
			},{
				"id":1405,
				"text":"修水县"
			},{
				"id":1406,
				"text":"永修县"
			},{
				"id":1407,
				"text":"德安县"
			},{
				"id":1408,
				"text":"星子县"
			},{
				"id":1409,
				"text":"都昌县"
			},{
				"id":1410,
				"text":"湖口县"
			},{
				"id":1411,
				"text":"彭泽县"
			},{
				"id":1412,
				"text":"瑞昌市"
			},{
				"id":1413,
				"text":"共青城市"
			}]
		},{
			"id":1414,
			"text":"新余市",
			"children":[{
				"id":1416,
				"text":"渝水区"
			},{
				"id":1417,
				"text":"分宜县"
			}]
		},{
			"id":1418,
			"text":"鹰潭市",
			"children":[{
				"id":1420,
				"text":"月湖区"
			},{
				"id":1421,
				"text":"余江县"
			},{
				"id":1422,
				"text":"贵溪市"
			}]
		},{
			"id":1423,
			"text":"赣州市",
			"children":[{
				"id":1425,
				"text":"章贡区"
			},{
				"id":1426,
				"text":"赣县"
			},{
				"id":1427,
				"text":"信丰县"
			},{
				"id":1428,
				"text":"大余县"
			},{
				"id":1429,
				"text":"上犹县"
			},{
				"id":1430,
				"text":"崇义县"
			},{
				"id":1431,
				"text":"安远县"
			},{
				"id":1432,
				"text":"龙南县"
			},{
				"id":1433,
				"text":"定南县"
			},{
				"id":1434,
				"text":"全南县"
			},{
				"id":1435,
				"text":"宁都县"
			},{
				"id":1436,
				"text":"于都县"
			},{
				"id":1437,
				"text":"兴国县"
			},{
				"id":1438,
				"text":"会昌县"
			},{
				"id":1439,
				"text":"寻乌县"
			},{
				"id":1440,
				"text":"石城县"
			},{
				"id":1441,
				"text":"瑞金市"
			},{
				"id":1442,
				"text":"南康市"
			}]
		},{
			"id":1443,
			"text":"吉安市",
			"children":[{
				"id":1445,
				"text":"吉州区"
			},{
				"id":1446,
				"text":"青原区"
			},{
				"id":1447,
				"text":"吉安县"
			},{
				"id":1448,
				"text":"吉水县"
			},{
				"id":1449,
				"text":"峡江县"
			},{
				"id":1450,
				"text":"新干县"
			},{
				"id":1451,
				"text":"永丰县"
			},{
				"id":1452,
				"text":"泰和县"
			},{
				"id":1453,
				"text":"遂川县"
			},{
				"id":1454,
				"text":"万安县"
			},{
				"id":1455,
				"text":"安福县"
			},{
				"id":1456,
				"text":"永新县"
			},{
				"id":1457,
				"text":"井冈山市"
		
jquery.localRegionCascade.js
(function($) {
	function create(target) {
		var opts = $.data(target,'regionCascade').options;		
		createProvince(target);
	}
	
	function createProvince(target,index){
		var opts = $.data(target,'regionCascade').options;
		var data = opts.data;
		//var data = localRegionData;
		$(target).html('');
		var select = $('<select class="uc"></select>').appendTo(target);
		$('<option value="">'+opts.defaultText+'</option>').appendTo(select);		
		if(!!data && !!data[opts.jsonName]){
			for(var i=0;i<data[opts.jsonName].length;i++)
			{						
				$('<option value="'+data[opts.jsonName][i].id+'">'+data[opts.jsonName][i].text+'</option>').appendTo(select);
			}			
		}		
		if(typeof index != 'undefined'){			
			$(select).get(0).selectedIndex=index; 
			if(index != 0){
				createCity(target);
			}
		}
		$(select).change(function(){
			var va = $(this).val();
			if(!!va){
				createCity(target);
			}else{
				var el = $(target).find("select").eq(0);
				removeAfterEl(el,"select");
			}			
		});
	}
	
	function createCity(target,index){
		var opts = $.data(target,'regionCascade').options;
		var data = opts.data;
		//var data = localRegionData;
		var el = $(target).find("select").eq(0);
		removeAfterEl(el,"select");
		var prov_index = el.get(0).selectedIndex-1;		
		
		
		if(!!data && !!data[opts.jsonName] && data[opts.jsonName][prov_index]['children']){
			var select = $('<select class="uc"></select>').appendTo(target);
			$('<option value="">'+opts.defaultText+'</option>').appendTo(select);	
			for(var i=0;i<data[opts.jsonName][prov_index]['children'].length;i++)
			{						
				$('<option value="'+data[opts.jsonName][prov_index]['children'][i].id+'">'+data[opts.jsonName][prov_index]['children'][i].text+'</option>').appendTo(select);
			}	
			if(typeof index != 'undefined'){				
				$(select).get(0).selectedIndex=index; 
				if(index != 0){
					createDistrict(target);
				}
			}
			$(select).change(function(){
				var va = $(this).val();
				if(!!va){
				createDistrict(target);
				}else{
					var el = $(target).find("select").eq(1);
					removeAfterEl(el,"select");
				}
			});
		}else{
			if (opts.onEndSelect){
				var str = '';
				$(target).find('select').each(function(i,n){
					str += $(n).find("option:selected").text();
				});
				var id = $(target).find('select').last().val();
				var time4 = new Date().getTime();
				$.data(target,'time4',time4);
				var timeStr = $.data(target,'time3')+'----'+time4;
				opts.onEndSelect.call(target,id,str,opts.serNumber,timeStr);
			}	
		}
		
	}
	
	function createDistrict(target,value){
		var opts = $.data(target,'regionCascade').options;
		var data = opts.data;
		//var data = localRegionData;
		var el = $(target).find("select").eq(1);
		removeAfterEl(el,"select");
		var prov_index = $(target).find("select").eq(0).get(0).selectedIndex-1;
		var city_index = $(target).find("select").eq(1).get(0).selectedIndex-1;	
		
		
		if(!!data && !!data[opts.jsonName] && !!data[opts.jsonName][prov_index] && !!data[opts.jsonName][prov_index]['children'] && !!data[opts.jsonName][prov_index]['children'][city_index] && !!data[opts.jsonName][prov_index]['children'][city_index]['children']){
			var select = $('<select class="uc"></select>').appendTo(target);
			$('<option value="">'+opts.defaultText+'</option>').appendTo(select);	
			for(var i=0;i<data[opts.jsonName][prov_index]['children'][city_index]['children'].length;i++)
			{						
				$('<option value="'+data[opts.jsonName][prov_index]['children'][city_index]['children'][i].id+'">'+data[opts.jsonName][prov_index]['children'][city_index]['children'][i].text+'</option>').appendTo(select);
			}		
			if(typeof value != 'undefined'){
				$(select).val(value);
			}
			$(select).change(function(){
				var id = $(this).val();
				if (!!id && opts.onEndSelect){
					var str = '';
					$(target).find('select').each(function(i,n){
						str += $(n).find("option:selected").text();
					});
					var time4 = new Date().getTime();
					$.data(target,'time4',time4);
					var timeStr = $.data(target,'time3')+'----'+time4;
					opts.onEndSelect.call(target,id,str,opts.serNumber,timeStr);
				}			
			});
		}else{
			if (opts.onEndSelect){
				var str = '';
				$(target).find('select').each(function(i,n){
					str += $(n).find("option:selected").text();
				});
				
				var id = $(target).find('select').last().val();
				var time4 = new Date().getTime();				
				$.data(target,'time4',time4);
				var timeStr = $.data(target,'time3')+'----'+time4;
				opts.onEndSelect.call(target,id,str,opts.serNumber,timeStr);
			}	
		}
		
	}
	
	
	
	function removeAfterEl(el,type)
	{
		var s1 = $(el).nextAll(type);
		s1.each(function(i){
		//alert($(this).index());
			$(this).remove();//循环把它们删除
	    });
	}
	
	function BinSearch(R,K)
    { //在有序表R[1..n]中进行二分查找,成功时返回结点的位置,失败时返回零
      var low=1,high=n,mid; //置当前查找区间上、下界的初值
      while(low<=high){ //当前查找区间R[low..high]非空
        mid=(low+high)/2;
        if(R[mid].key==K) return mid; //查找成功返回
        if(R[mid].kdy>K)
           high=mid-1; //继续在R[low..mid-1]中查找
        else
           low=mid+1; //继续在R[mid+1..high]中查找
       }
      return 0; //当low>high时表示查找区间为空,查找失败
     } //BinSeareh
	


	$.fn.regionCascade = function(options,param) {		 
		var current = 0;
		if (typeof options == 'string') {
			var method = $.fn.regionCascade.methods[options];
			if (method) {
				return method(this, param);
			}
		}
		options = options || {};
		return this.each( function() {
			var state = $.data(this, 'regionCascade');
			if (state) {
				$.extend(state.options, options);
			} else {
				$.data(this, 'regionCascade', {
					options: $.extend({}, $.fn.regionCascade.defaults,options)
				});
			}
			create(this);
			var opts = $.data(this,'regionCascade').options;
		});
	};
	$.fn.regionCascade.methods = {
		getData: function(jq){	
			var finalLevel = $.data(jq[0],'finallevel');			
			return '';
		},
		setData: function(jq,va){			
			var opts = $.data(jq[0],'regionCascade').options;
			var data = opts.data;
			//var data = localRegionData;
			var time3 = new Date().getTime();
			$.data(jq[0],'time3',time3);
			var midp,midc;		
			if(!va){
				createProvince(jq[0]);	
			}
			if(!!data && !!data[opts.jsonName] && !!va){
				var low = 0;
				var high = data[opts.jsonName].length-1;
				var lengthp = data[opts.jsonName].length-1;
				while(low<=high){ 					
					midp=Math.ceil((low+high)/2);
					if(data[opts.jsonName][low]['id']>va){
						midp = low;
						low = high+3;
					}else if(data[opts.jsonName][high]['id']<=va){
						midp = high+1;
						low = high+4;
					}
					else  if(data[opts.jsonName][midp-1]['id'] == va || (data[opts.jsonName][midp-1]['id']<va && data[opts.jsonName][midp]['id']>va)) 
					{
						low=high+1;
					}					
					else if(data[opts.jsonName][midp-1]['id']>va){
			        	  high = midp-1;
			          }else{
			        	  low=midp+1;
			         }		          
			   }				
				createProvince(jq[0],midp);				
				if(midp>=1 && data[opts.jsonName][midp-1]['id'] < va){
					low = 0;
					high = data[opts.jsonName][midp-1]['children'].length-1;
					var lengthc =  data[opts.jsonName][midp-1]['children'].length-1;					
					while(low<=high){							
						midc=Math.ceil((low+high)/2);
						if(data[opts.jsonName][midp-1]['children'][low]['id']>va){
							midc = low;
							low = high+3;
						}else if(data[opts.jsonName][midp-1]['children'][high]['id']<=va){
							midc = high+1;
							low = high+4;
						}
						else if(data[opts.jsonName][midp-1]['children'][midc-1]['id'] == va || (data[opts.jsonName][midp-1]['children'][midc-1]['id']<va && data[opts.jsonName][midp-1]['children'][midc]['id']>va)) 
						{
							low=high+1;
						}									          
						else if(data[opts.jsonName][midp-1]['children'][midc-1]['id']>va){
				        	  high=midc-1; //继续在R[low..mid-1]中查找	
				          }else{
				        	  low=midc+1; //继续在R[mid+1..high]中查找				        	  			             
				         }				          
					}				
					createCity(jq[0],midc);
					if(midc>=1 && data[opts.jsonName][midp-1]['children'][midc-1]['id']<va){
						createDistrict(jq[0],va);
					}else{
						createDistrict(jq[0]);
					}					
				}else{
					createCity(jq[0]);
				}
			}
			
		}							
	};
	$.fn.regionCascade.defaults = {		
		showNumber:3,
		serNumber:0,
		defaultText:'--请选择--',
		container:'',
		jsonName:'places',
		editName:'brother',
		data:localRegionData,
		baseurl:'/front/transact/getPlaces',
		editUrl:'/front/transact/editPlace',
		paramName:'placeId',
		onEndSelect:function(result){}
	};
})(jQuery);
jquery.hrzAccordion.js
(function($) {
	$.hrzAccordion = {
		init: function(target) {
			var opts = $.data(target,'hrzAccordion').options;
			var container = $(target).attr("id") || $(target).attr("class");
			$(target).wrap("<div class='"+opts.containerClass+"'></div>");
			var elementCount = $('#'+container+' > li, .'+container+' > li').size();
			var containerWidth =  $("."+opts.containerClass).width();
			var handleWidth = $("."+opts.handleClass).css("width");
			handleWidth =  handleWidth.replace(/px/,"");
			var finalWidth,handle;

			if(!!opts.fixedWidth) {
				finalWidth = opts.fixedWidth;
			} else {
				finalWidth = containerWidth-(elementCount*handleWidth)-handleWidth;
			}
			$('#'+container+' > li, .'+container+' > li').each( function(i) {
				$(this).attr('id', container+"ListItem"+i);
				$(this).attr('class',opts.listItemClass);
				$(this).html("<div class='"+opts.contentContainerClass+"' id='"+container+"Content"+i+"'>"
				+"<div class=\""+opts.contentWrapper+"\">"
				+"<div class=\""+opts.contentInnerWrapper+"\">"
				+$(this).html()
				+"</div></div></div>");
				if($("div",this).hasClass(opts.handleClass)) {
					var html = $("div."+opts.handleClass,this).attr("id",""+container+"Handle"+i+"").html();
					$("div."+opts.handleClass,this).remove();
					handle = "<div class=\""+opts.handleClass+"\" id='"+container+"Handle"+i+"'>"+html+"</div>";
				} else {
					handle = "<div class=\""+opts.handleClass+"\" id='"+container+"Handle"+i+"'></div>";
				}
				if(opts.handlePositionArray) {
					var splitthis 		= opts.handlePositionArray.split(",");
					opts.handlePosition = splitthis[i];
				}

				switch(opts.handlePosition ) {
					case "left":
						$(this).prepend( handle );
						break;
					case "right":
						$(this).append( handle );
						break;
					case "top":
						$("."+container+"Top").append( handle );
						break;
					case "bottom":
						$("."+container+"Bottom").append( handle );
						break;
				}
				$("#"+container+"Handle"+i).bind("mouseover", function() {
					$("#"+container+"Handle"+i).addClass(opts.handleClassOver);
				});
				$("#"+container+"Handle"+i).bind("mouseout", function() {
					if( $("#"+container+"Handle"+i).attr("rel") != "selected") {
						$("#"+container+"Handle"+i).removeClass(opts.handleClassOver);
					}
				});
				$.hrzAccordion.setOnEvent(i, container, finalWidth, opts);

				if(i == elementCount-1) {
					$('#'+container+",."+container).show();
				}

				if(opts.openOnLoad !== false && i == elementCount-1) {
					var location_hash = location.hash;
					location_hash  = location_hash.replace("#", "");
					if(location_hash.search(opts.hashPrefix) != '-1' ) {
						var tab = 1;
						location_hash  = location_hash.replace(opts.hashPrefix, "");
					}

					if(location_hash && tab ==1) {
						$("#"+container+"Handle"+(location_hash)).attr("rel",container+"HandleSelected");
						$("#"+container+"Content"+(location_hash)).attr("rel",container+"ContainerSelected");
						$("#"+container+"Handle"+(location_hash-1)).trigger(opts.eventTrigger);

					} else {
						$("#"+container+"Handle"+(opts.openOnLoad)).attr("rel",container+"HandleSelected");
						$("#"+container+"Content"+(opts.openOnLoad)).attr("rel",container+"ContainerSelected");
						$("#"+container+"Handle"+(opts.openOnLoad-1)).trigger(opts.eventTrigger);
					}
				}
			});
			if(opts.cycle === true) {
				$(target).hrzAccordionLoop();
			}
		},
		setOnEvent: function(i, container, finalWidth, opts) {
			$("#"+container+"Handle"+i).bind(opts.eventTrigger, function() {
				var status = $('[rel='+container+'ContainerSelected]').data('status');
				if(status ==1 && opts.eventWaitForAnim === true) {
					return false;
				}
				if( $("#"+container+"Handle"+i).attr("rel") != container+"HandleSelected") {
					opts.eventAction;
					$('[id*='+container+'Handle]').attr("rel","");
					$('[id*='+container+'Handle]').attr("class",opts.handleClass);
					$("#"+container+"Handle"+i).addClass(opts.handleClassSelected);
					$("."+opts.contentWrapper).css({
						width: finalWidth+"px"
					});
					switch(opts.closeOpenAnimation) {
						case 1:
							if($('[rel='+container+'ContainerSelected]').get(0) ) {
								$('[rel='+container+'ContainerSelected]').data('status',1);
								//current_width = $('[rel='+container+'ContainerSelected]').width();
								$('[rel='+container+'ContainerSelected]').animate({
									width: "0px",
									opacity:"0"
								}, {
									queue:true,
									duration:opts.closeSpeed ,
									easing:opts.closeEaseAction,
									complete: function() {
										$('[rel='+container+'ContainerSelected]').data('status',0);
									} ,
									step: function(now) {
										width = $(this).width();
										//new_width = finalWidth- (finalWidth  * (width/current_width));
										new_width = finalWidth - width;
										$('#'+container+'Content'+i).width(Math.ceil(new_width)).css("opacity","1");
									}
								});

							} else {
								$('[rel='+container+'ContainerSelected]').data('status',1);
								$('#'+container+'Content'+i).animate({
									width: finalWidth,
									opacity:"1"
								}, {
									queue:false,
									duration:opts.closeSpeed ,
									easing:opts.closeEaseAction,
									complete: function() {
										$('[rel='+container+'ContainerSelected]').data('status',0);
									}
								});
							}
							break;
						case 2:
							$('[id*='+container+'Content]').css({
								width: "0px"
							});
							$('#'+container+'Content'+i).animate({
								width: finalWidth+"px",
								opacity:"1"
							}, {
								queue:false,
								duration:opts.openSpeed ,
								easing:opts.openEaseAction,
								complete:
								opts.completeAction
							});
							break;
					}
					$('[id*='+container+'Content]').attr("rel","");
					$("#"+container+"Handle"+i).attr("rel",container+"HandleSelected");
					$("#"+container+"Content"+i).attr("rel",container+"ContainerSelected");
				}
			});
		}
	};

	$.fn.hrzAccordionLoop = function(options,param) {
		var current = 0;
		if (typeof options == 'string') {
			var method = $.fn.hrzAccordionLoop.methods[options];
			if (method) {
				return method(this, param);
			}
		}
		options = options || {};
		return this.each( function() {
			var state = $.data(this, 'hrzAccordionLoop');
			if (state) {
				$.extend(state.options, options);
			} else {
				$.data(this, 'hrzAccordionLoop', {
					options: $.extend({}, $.fn.hrzAccordion.defaults,options)
				});
			}
			var container = $(this).attr("id") || $(this).attr("class");
			var elementCount = $('#'+container+' > li, .'+container+' > li').size();
			variable_holder="interval"+container ;
			var opts = $.data(this,'hrzAccordion').options;
			var i =0;
			var loopStatus  = "start";
			variable_holder = window.setInterval( function() {
				$("#"+container+"Handle"+i).trigger(opts.eventTrigger);
				if(loopStatus =="start") {
					i = i + 1;
				} else {
					i = i-1;
				}
				if(i==elementCount && loopStatus  == "start") {
					loopStatus  = "end";
					i=elementCount-1;
				}

				if(i==0 && loopStatus  == "end") {
					loopStatus  = "start";
					i=0;

				}
			},opts.cycleInterval);
		});
	};
	$.fn.hrzAccordion = function(options,param) {
		var current = 0;
		if (typeof options == 'string') {
			var method = $.fn.hrzAccordion.methods[options];
			if (method) {
				return method(this, param);
			}
		}
		options = options || {};
		return this.each( function() {
			var state = $.data(this, 'hrzAccordion');
			if (state) {
				$.extend(state.options, options);
			} else {
				$.data(this, 'hrzAccordion', {
					options: $.extend({}, $.fn.hrzAccordion.defaults,options)
				});
			}
			$.hrzAccordion.init(this);
		});
	};
	$.fn.hrzAccordion.methods = {
	};
	$.fn.hrzAccordion.defaults = {
		eventTrigger	   		: "click",
		containerClass     		: "container",
		listItemClass      		: "listItem",
		contentContainerClass  	: "contentContainer",
		contentWrapper     		: "contentWrapper",
		contentInnerWrapper		: "contentInnerWrapper",
		handleClass        		: "handle",
		handleClassOver    		: "handleOver",
		handleClassSelected		: "handleSelected",
		handlePosition     		: "right",
		handlePositionArray		: "", // left,left,right,right,right
		closeEaseAction    		: "swing",
		closeSpeed     			: 500,
		openEaseAction     		: "swing",
		openSpeed      			: 500,
		openOnLoad		   		: 2,
		hashPrefix		   		: "tab",
		eventAction		   		: function() {
		},
		completeAction	   		: function() {
		},
		closeOpenAnimation 		: 1,// 1 - open and close at the same time / 2- close all and than open next
		cycle			   		: false, // not integrated yet, will allow to cycle through tabs by interval
		cycleInterval	   		: 10000,
		fixedWidth				: "",
		eventWaitForAnim		: true
	};
})(jQuery);
center
jQuery.extend({
	center:function(selector){		
		$(selector).css('position','absolute');  
		$(selector).css('top', ( $(window).height() - this.height() )/2 +$(window).scrollTop() + 'px');  
		$(selector).css('left', ( $(window).width() - this.width() )/2+$(window).scrollLeft() + 'px');  
	    return $(selector);  
	}
});
autoscroll
jQuery.extend({	
	autoscroll:function(selector){
		$('html,body').animate(  
		        {scrollTop: $(selector).offset().top},  
		        500)  
	}
});
quicksort
jQuery.extend({	
	quickSort:function(arr) {
		if (arr.length <= 1) {return arr;}
		var pivotIndex = Math.floor(arr.length / 2);
		var pivot = arr.splice(pivotIndex, 1);
		var left = [];
		var right = [];
		for (var i = 0; i < arr.length; i++){
			if (arr[i] < pivot){
				left.push(arr[i]);
				}else{
				right.push(arr[i]);
				}
			}
		return quickSort(left).concat(pivot, quickSort(right));
	},
	quickSortObjArr:function(objArr,key) {
		if (objArr.length <= 1) {return objArr;}
		var pivotIndex = Math.floor(objArr.length / 2);
		//var pivot = objArr.splice(pivotIndex, 1);
		var pivot = objArr[pivotIndex];
		objArr.splice(pivotIndex, 1);	
		var left = [];
		var right = [];
		for (var i = 0; i < objArr.length; i++){		
			if (objArr[i][key] < pivot[key]){			
				left.push(objArr[i]);
				}else{
				right.push(objArr[i]);
				}
			}
		return quickSortObjArr(left,key).concat(pivot, quickSortObjArr(right,key));
	}
});
inputChange
(function($) {
	function init(target) {
		var opts = $.data(target,'inputChange');
		$('input.'+opts.className).css("color","#999999");
		$('input.'+opts.className).focus( function() {
			var className = $(this).attr('class');
			if(className.indexOf(opts.className)!=-1) {
				$(this).val('');
				$(this).css("color","#000000");
				$(this).removeClass(opts.className);
			}
		});
		$('.'+opts.className).change( function() {
			$(this).css("color","#000000");
			$(this).removeClass(opts.className);
		});
	}

	$.fn.inputChange = function(options,param) {
		var current = 0;
		if (typeof options == 'string') {
			var method = $.fn.inputChange.methods[options];
			if (method) {
				return method(this, param);
			}
		}
		options = options || {};
		return this.each( function() {
			var state = $.data(this, 'inputChange');
			if (state) {
				$.extend(state.options, options);
			} else {
				$.data(this, 'inputChange', {
					options: $.extend({}, $.fn.inputChange.defaults,options)
				});
			}
			init(this);
			var opts = $.data(this,'inputChange').options;
		});
	};
	$.fn.inputChange.defaults = {
		className:'beforeSuggest',
		onInputChange: function() {
		}
	};
})(jQuery);
Global site tag (gtag.js) - Google Analytics