text: ﻿/**
   * jQuery EasyUI 1.3.5
   * 
   * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
   * 
   * Licensed under the GPL or commercial licenses To use it on other terms please
   * contact us: info@jeasyui.com http://www.gnu.org/licenses/gpl.txt
   * http://www.jeasyui.com/license_commercial.php
   * 
   */
  (function($) {
  	function _1(_2, _3) {
  		var _4 = $.data(_2, "combo");
  		var _5 = _4.options;
  		var _6 = _4.combo;
  		var _7 = _4.panel;
  		if (_3) {
  			_5.width = _3;
  		}
  		if (isNaN(_5.width)) {
  			var c = $(_2).clone();
  			c.css("visibility", "hidden");
  			c.appendTo("body");
  			_5.width = c.outerWidth();
  			c.remove();
  		}
  		_6.appendTo("body");
  		var _8 = _6.find("input.combo-text");
  		var _9 = _6.find(".combo-arrow");
  		var _a = _5.hasDownArrow ? _9._outerWidth() : 0;
  		//_6._outerWidth(_5.width)._outerHeight(_5.height);
  		//_8._outerWidth(_6.width() - _a);
  		_8.css({
  			height : _6.height() + "px",
  			lineHeight : _6.height() + "px"
  		});
  		_9._outerHeight(_6.height());
  		_6.insertAfter(_2);
  		_7.panel("resize", {
  			width : (_5.panelWidth ? _5.panelWidth : _6.outerWidth()),
  			height : _5.panelHeight
  		});
  	}
  	;
  	function _b(_c) {
  		$(_c).addClass("combo-f").hide();
  		var _d = $(
  				"<span class=\"combo input-group\">"
  						+ "<input type=\"text\" class=\"combo-text form-control\" autocomplete=\"off\">"
  						+ "<span class=\"input-group-btn combo-arrow\"><a href=\"javascript:;\" class=\"btn btn-default\"><i class=\"fa fa-chevron-down\"></i></a></span>"
  						+ "<input type=\"hidden\" class=\"combo-value\">"
  						+ "</span>").insertAfter(_c);
  		var _e = $("<div class=\"combo-panel\"></div>").appendTo("body");
  		_e.panel({
  			doSize : false,
  			closed : true,
  			cls : "combo-p",
  			style : {
  				position : "absolute",
  				zIndex : 10
  			},
  			onOpen : function() {
  				_d.addClass('open');
  				$(this).panel("resize");
  			},
  			onClose : function() {
  				_d.removeClass('open');
  				var _f = $.data(_c, "combo");
  				if (_f) {
  					_f.options.onHidePanel.call(_c);
  				}
  			}
  		});
  		var _10 = $(_c).attr("name");
  		if (_10) {
  			_d.find("input.combo-value").attr("name", _10);
  			$(_c).removeAttr("name").attr("comboName", _10);
  		}
  		return {
  			combo : _d,
  			panel : _e
  		};
  	}
  	;
  	function _11(_12) {
  		var _13 = $.data(_12, "combo");
  		var _14 = _13.options;
  		var _15 = _13.combo;
  		if (_14.hasDownArrow) {
  			_15.find(".combo-arrow").show();
  		} else {
  			_15.find(".combo-arrow").hide();
  		}
  		_16(_12, _14.disabled);
  		_17(_12, _14.readonly);
  	}
  	;
  	function _18(_19) {
  		var _1a = $.data(_19, "combo");
  		var _1b = _1a.combo.find("input.combo-text");
  		_1b.validatebox("destroy");
  		_1a.panel.panel("destroy");
  		_1a.combo.remove();
  		$(_19).remove();
  	}
  	;
  	function _1c(_1d) {
  		$(_1d).find(".combo-f").each(function() {
  			var p = $(this).combo("panel");
  			if (p.is(":visible")) {
  				p.panel("close");
  			}
  		});
  	}
  	;
  	function _1e(_1f) {
  		var _20 = $.data(_1f, "combo");
  		var _21 = _20.options;
  		var _22 = _20.panel;
  		var _23 = _20.combo;
  		var _24 = _23.find(".combo-text");
  		var _25 = _23.find(".combo-arrow");
  		$(document).unbind(".combo").bind("mousedown.combo", function(e) {
  			var p = $(e.target).closest("span.combo,div.combo-p");
  			if (p.length) {
  				_1c(p);
  				return;
  			}
  			$("body>div.combo-p>div.combo-panel:visible").panel("close");
  		});
  		_24.unbind(".combo");
  		_25.unbind(".combo");
  		if (!_21.disabled && !_21.readonly) {
  			_24.bind(
  					"click.combo",
  					function(e) {
  						if (!_21.editable) {
  							_26.call(this);
  						} else {
  							var p = $(this).closest("div.combo-panel");
  							$("div.combo-panel:visible").not(_22).not(p).panel(
  									"close");
  						}
  					}).bind("keydown.combo", function(e) {
  				switch (e.keyCode) {
  				case 38:
  					_21.keyHandler.up.call(_1f, e);
  					break;
  				case 40:
  					_21.keyHandler.down.call(_1f, e);
  					break;
  				case 37:
  					_21.keyHandler.left.call(_1f, e);
  					break;
  				case 39:
  					_21.keyHandler.right.call(_1f, e);
  					break;
  				case 13:
  					e.preventDefault();
  					_21.keyHandler.enter.call(_1f, e);
  					return false;
  				case 9:
  				case 27:
  					_27(_1f);
  					break;
  				default:
  					if (_21.editable) {
  						if (_20.timer) {
  							clearTimeout(_20.timer);
  						}
  						_20.timer = setTimeout(function() {
  							var q = _24.val();
  							if (_20.previousValue != q) {
  								_20.previousValue = q;
  								$(_1f).combo("showPanel");
  								_21.keyHandler.query.call(_1f, _24.val(), e);
  								$(_1f).combo("validate");
  							}
  						}, _21.delay);
  					}
  				}
  			});
  			_25.bind("click.combo", function() {
  				_26.call(this);
  			}).bind("mouseenter.combo", function() {
  				$(this).addClass("combo-arrow-hover");
  			}).bind("mouseleave.combo", function() {
  				$(this).removeClass("combo-arrow-hover");
  			});
  		}
  		function _26() {
  			if (_22.is(":visible")) {
  				_1c(_22);
  				_27(_1f);
  			} else {
  				var p = $(this).closest("div.combo-panel");
  				$("div.combo-panel:visible").not(_22).not(p).panel("close");
  				$(_1f).combo("showPanel");
  			}
  			_24.focus();
  		}
  		;
  	}
  	;
  	function _28(_29) {
  		var _2a = $.data(_29, "combo").options;
  		var _2b = $.data(_29, "combo").combo;
  		var _2c = $.data(_29, "combo").panel;
  		if ($.fn.window) {
  			_2c.panel("panel").css("z-index", $.fn.window.defaults.zIndex++);
  		}
  		_2c.panel("move", {
  			left : _2b.offset().left,
  			top : _2d()
  		});
  		if (_2c.panel("options").closed) {
  			_2c.panel("open");
  			_2a.onShowPanel.call(_29);
  		}
  		(function() {
  			if (_2c.is(":visible")) {
  				_2c.panel("move", {
  					left : _2e(),
  					top : _2d()
  				});
  				setTimeout(arguments.callee, 200);
  			}
  		})();
  		function _2e() {
  			var _2f = _2b.offset().left;
  			if (_2f + _2c._outerWidth() > $(window)._outerWidth()
  					+ $(document).scrollLeft()) {
  				_2f = $(window)._outerWidth() + $(document).scrollLeft()
  						- _2c._outerWidth();
  			}
  			if (_2f < 0) {
  				_2f = 0;
  			}
  			return _2f;
  		}
  		;
  		function _2d() {
  			var top = _2b.offset().top + _2b._outerHeight();
  			if (top + _2c._outerHeight() > $(window)._outerHeight()
  					+ $(document).scrollTop()) {
  				top = _2b.offset().top - _2c._outerHeight();
  			}
  			if (top < $(document).scrollTop()) {
  				top = _2b.offset().top + _2b._outerHeight();
  			}
  			return top;
  		}
  		;
  	}
  	;
  	function _27(_30) {
  		var _31 = $.data(_30, "combo").panel;
  		_31.panel("close");
  	}
  	;
  	function _32(_33) {
  		var _34 = $.data(_33, "combo").options;
  		var _35 = $(_33).combo("textbox");
  		_35.validatebox($.extend({}, _34,
  				{
  					deltaX : (_34.hasDownArrow ? _34.deltaX
  							: (_34.deltaX > 0 ? 1 : -1))
  				}));
  	}
  	;
  	function _16(_36, _37) {
  		var _38 = $.data(_36, "combo");
  		var _39 = _38.options;
  		var _3a = _38.combo;
  		if (_37) {
  			_39.disabled = true;
  			$(_36).attr("disabled", true);
  			_3a.find(".combo-value").attr("disabled", true);
  			_3a.find(".combo-text").attr("disabled", true);
  		} else {
  			_39.disabled = false;
  			$(_36).removeAttr("disabled");
  			_3a.find(".combo-value").removeAttr("disabled");
  			_3a.find(".combo-text").removeAttr("disabled");
  		}
  	}
  	;
  	function _17(_3b, _3c) {
  		var _3d = $.data(_3b, "combo");
  		var _3e = _3d.options;
  		_3e.readonly = _3c == undefined ? true : _3c;
  		var _3f = _3e.readonly ? true : (!_3e.editable);
  		_3d.combo.find(".combo-text").attr("readonly", _3f).css("cursor",
  				_3f ? "pointer" : "");
  	}
  	;
  	function _40(_41) {
  		var _42 = $.data(_41, "combo");
  		var _43 = _42.options;
  		var _44 = _42.combo;
  		if (_43.multiple) {
  			_44.find("input.combo-value").remove();
  		} else {
  			_44.find("input.combo-value").val("");
  		}
  		_44.find("input.combo-text").val("");
  	}
  	;
  	function _45(_46) {
  		var _47 = $.data(_46, "combo").combo;
  		return _47.find("input.combo-text").val();
  	}
  	;
  	function _48(_49, _4a) {
  		var _4b = $.data(_49, "combo");
  		var _4c = _4b.combo.find("input.combo-text");
  		if (_4c.val() != _4a) {
  			_4c.val(_4a);
  			$(_49).combo("validate");
  			_4b.previousValue = _4a;
  		}
  	}
  	;
  	function _4d(_4e) {
  		var _4f = [];
  		var _50 = $.data(_4e, "combo").combo;
  		_50.find("input.combo-value").each(function() {
  			_4f.push($(this).val());
  		});
  		return _4f;
  	}
  	;
  	function _51(_52, _53) {
  		var _54 = $.data(_52, "combo").options;
  		var _55 = _4d(_52);
  		var _56 = $.data(_52, "combo").combo;
  		_56.find("input.combo-value").remove();
  		var _57 = $(_52).attr("comboName");
  		for (var i = 0; i < _53.length; i++) {
  			var _58 = $("<input type=\"hidden\" class=\"combo-value\">")
  					.appendTo(_56);
  			if (_57) {
  				_58.attr("name", _57);
  			}
  			_58.val(_53[i]);
  		}
  		var tmp = [];
  		for (var i = 0; i < _55.length; i++) {
  			tmp[i] = _55[i];
  		}
  		var aa = [];
  		for (var i = 0; i < _53.length; i++) {
  			for (var j = 0; j < tmp.length; j++) {
  				if (_53[i] == tmp[j]) {
  					aa.push(_53[i]);
  					tmp.splice(j, 1);
  					break;
  				}
  			}
  		}
  		if (aa.length != _53.length || _53.length != _55.length) {
  			if (_54.multiple) {
  				_54.onChange.call(_52, _53, _55);
  			} else {
  				_54.onChange.call(_52, _53[0], _55[0]);
  			}
  		}
  	}
  	;
  	function _59(_5a) {
  		var _5b = _4d(_5a);
  		return _5b[0];
  	}
  	;
  	function _5c(_5d, _5e) {
  		_51(_5d, [ _5e ]);
  	}
  	;
  	function _5f(_60) {
  		var _61 = $.data(_60, "combo").options;
  		var fn = _61.onChange;
  		_61.onChange = function() {
  		};
  		if (_61.multiple) {
  			if (_61.value) {
  				if (typeof _61.value == "object") {
  					_51(_60, _61.value);
  				} else {
  					_5c(_60, _61.value);
  				}
  			} else {
  				_51(_60, []);
  			}
  			_61.originalValue = _4d(_60);
  		} else {
  			_5c(_60, _61.value);
  			_61.originalValue = _61.value;
  		}
  		_61.onChange = fn;
  	}
  	;
  	$.fn.combo = function(_62, _63) {
  		if (typeof _62 == "string") {
  			var _64 = $.fn.combo.methods[_62];
  			if (_64) {
  				return _64(this, _63);
  			} else {
  				return this.each(function() {
  					var _65 = $(this).combo("textbox");
  					_65.validatebox(_62, _63);
  				});
  			}
  		}
  		_62 = _62 || {};
  		return this.each(function() {
  			var _66 = $.data(this, "combo");
  			if (_66) {
  				$.extend(_66.options, _62);
  			} else {
  				var r = _b(this);
  				_66 = $.data(this, "combo", {
  					options : $.extend({}, $.fn.combo.defaults, $.fn.combo
  							.parseOptions(this), _62),
  					combo : r.combo,
  					panel : r.panel,
  					previousValue : null
  				});
  				$(this).removeAttr("disabled");
  			}
  			_11(this);
  			_1(this);
  			_1e(this);
  			_32(this);
  			_5f(this);
  		});
  	};
  	$.fn.combo.methods = {
  		options : function(jq) {
  			return $.data(jq[0], "combo").options;
  		},
  		panel : function(jq) {
  			return $.data(jq[0], "combo").panel;
  		},
  		textbox : function(jq) {
  			return $.data(jq[0], "combo").combo.find("input.combo-text");
  		},
  		destroy : function(jq) {
  			return jq.each(function() {
  				_18(this);
  			});
  		},
  		resize : function(jq, _67) {
  			return jq.each(function() {
  				_1(this, _67);
  			});
  		},
  		showPanel : function(jq) {
  			return jq.each(function() {
  				_28(this);
  			});
  		},
  		hidePanel : function(jq) {
  			return jq.each(function() {
  				_27(this);
  			});
  		},
  		disable : function(jq) {
  			return jq.each(function() {
  				_16(this, true);
  				_1e(this);
  			});
  		},
  		enable : function(jq) {
  			return jq.each(function() {
  				_16(this, false);
  				_1e(this);
  			});
  		},
  		readonly : function(jq, _68) {
  			return jq.each(function() {
  				_17(this, _68);
  				_1e(this);
  			});
  		},
  		isValid : function(jq) {
  			var _69 = $.data(jq[0], "combo").combo.find("input.combo-text");
  			return _69.validatebox("isValid");
  		},
  		clear : function(jq) {
  			return jq.each(function() {
  				_40(this);
  			});
  		},
  		reset : function(jq) {
  			return jq.each(function() {
  				var _6a = $.data(this, "combo").options;
  				if (_6a.multiple) {
  					$(this).combo("setValues", _6a.originalValue);
  				} else {
  					$(this).combo("setValue", _6a.originalValue);
  				}
  			});
  		},
  		getText : function(jq) {
  			return _45(jq[0]);
  		},
  		setText : function(jq, _6b) {
  			return jq.each(function() {
  				_48(this, _6b);
  			});
  		},
  		getValues : function(jq) {
  			return _4d(jq[0]);
  		},
  		setValues : function(jq, _6c) {
  			return jq.each(function() {
  				_51(this, _6c);
  			});
  		},
  		getValue : function(jq) {
  			return _59(jq[0]);
  		},
  		setValue : function(jq, _6d) {
  			return jq.each(function() {
  				_5c(this, _6d);
  			});
  		}
  	};
  	$.fn.combo.parseOptions = function(_6e) {
  		var t = $(_6e);
  		return $.extend({}, $.fn.validatebox.parseOptions(_6e), $.parser
  				.parseOptions(_6e, [ "width", "height", "separator", {
  					panelWidth : "number",
  					editable : "boolean",
  					hasDownArrow : "boolean",
  					delay : "number",
  					selectOnNavigation : "boolean"
  				} ]), {
  			panelHeight : (t.attr("panelHeight") == "auto" ? "auto"
  					: parseInt(t.attr("panelHeight")) || undefined),
  			multiple : (t.attr("multiple") ? true : undefined),
  			disabled : (t.attr("disabled") ? true : undefined),
  			readonly : (t.attr("readonly") ? true : undefined),
  			value : (t.val() || undefined)
  		});
  	};
  	$.fn.combo.defaults = $.extend({}, $.fn.validatebox.defaults, {
  		width : "auto",
  		height : 22,
  		panelWidth : null,
  		panelHeight : 200,
  		multiple : false,
  		selectOnNavigation : true,
  		separator : ",",
  		editable : true,
  		disabled : false,
  		readonly : false,
  		hasDownArrow : true,
  		value : "",
  		delay : 200,
  		deltaX : 19,
  		keyHandler : {
  			up : function(e) {
  			},
  			down : function(e) {
  			},
  			left : function(e) {
  			},
  			right : function(e) {
  			},
  			enter : function(e) {
  			},
  			query : function(q, e) {
  			}
  		},
  		onShowPanel : function() {
  		},
  		onHidePanel : function() {
  		},
  		onChange : function(_6f, _70) {
  		}
  	});
  })(jQuery);
  