var $_hi;
var $_formLock=false;
var $_changeLock=false;

//提示信息
jQuery.extend({
	//提示框
	hint: function($tx, $tm, $url, $bc, $bw, $ic, $ib, $wi, $pd) {
		if(typeof($tx) == "object") {	//数组，通过BR变成字符串
			var $txN = $tx[0];
			for(var $i=1; $i<$tx.length; $i++) {
				$txN += "<br/>" + $tx[$i];
			}
			$tx = $txN;
		}
		
	
		if(!$tm) $tm = 1;		//超时时间(秒)
		if(!$bc) $bc = '#06c';	//边框颜色
		if(!$bw) $bw = 3;		//边框宽度
		if(!$ic) $ic = '#fff';	//内容颜色
		if(!$ib) $ib = '#77a9e0';	//内容背景
		if(!$wi) $wi = 300 ;	//宽度
		if(!$pd) $pd = '20px';	//内间距

		//样式
		var $st = new Object();

		$st.fontWeight = 'bold';
		$st.color = $ic;
		$st.backgroundColor = $ib;

		$st.textAlign = "center";
		$st.border = $bw+"px "+"double "+$bc;
		$st.fontSize = "16px";
		$st.padding = $pd;
		$st.position = 'absolute';
		$st.zIndex = '999999999';
		$st.width = $wi+'px';

		//生成DIV标签
		$.removeHintFrame();
		var $div = document.createElement("div");
		$div.id = 'myHint';
		$div.innerHTML = $tx;
		for($k in $st) {
			$div.style[$k] = $st[$k];
		}

		document.body.appendChild($div);
		$div.style.left = (document.documentElement.clientWidth - $div.offsetWidth) / 2 + document.body.scrollLeft + document.documentElement.scrollLeft + 'px';
		$div.style.top = (document.documentElement.clientHeight - $div.offsetHeight) / 2 + document.body.scrollTop + document.documentElement.scrollTop + 'px';


		try {	//清除之前的定时器	
			clearTimeout($_hi);
		}catch (e){}

		if($url !=null) {	
			$_hi = setTimeout("$.removeHintFrame('"+$url+"')",$tm*1000);
		}
		else {	
			$_hi = setTimeout('$.removeHintFrame()',$tm*1000);
		}
	},
	
	//引用JS
	require : function($file) {
		var $obj = document.createElement("script");
		$obj.type = "text/javascript";
		$obj.src = $file;
		$("head").append($obj);
	},
	
	//引入CSS
	include : function($file) {
		$.ajax({cache:true, dataType:"text", url:$file, success:function($style){
			var $html = "<style>"+$style+"</style>";
			$("head").append($html);
		}})
	},
	
	//移除提示框
	removeHintFrame : function ($goTo) {
		var $_hint = document.getElementById('myHint')
		if($_hi && $_hint) {	
			$_hint.parentNode.removeChild($_hint);
		}

		if($goTo) {	
			location.replace($goTo);
		}
	},

	//将字符串转变为数组
	explode : function(separators, inputstring, includeEmpties) {
		inputstring = new String(inputstring);
		separators = new String(separators);

		if(separators == "undefined") {
			separators = " :;";
		}

		fixedExplode = new Array(1);
		currentElement = "";
		count = 0;

		for(x=0; x < inputstring.length; x++) {
			char = inputstring.charAt(x);
			if(separators.indexOf(char) != -1) {
				if ( ( (includeEmpties <= 0) || (includeEmpties == false)) && (currentElement == "")) { }
				else {
				fixedExplode[count] = currentElement;
				count++;
				currentElement = ""; } }
		else { currentElement += char; }
		}

		if (( ! (includeEmpties <= 0) && (includeEmpties != false)) || (currentElement != "")) {
		fixedExplode[count] = currentElement; }
		return fixedExplode;
	},

	//将一个元素移至中心位置
	goCenter : function(expression) {
		$(expression).css("position", "absolute");
		$(expression).css("zIndex", "50");

		$(expression).css("left", (document.documentElement.clientWidth - $(expression).width()) / 2 + document.body.scrollLeft + document.documentElement.scrollLeft + 'px');
		$(expression).css("top", (document.documentElement.clientHeight - $(expression).height()) / 2 + document.body.scrollTop + document.documentElement.scrollTop + 'px');

		if(parseInt($(expression).css("top")) < 0) $(expression).css("top", 0);	//超出高度
		if(parseInt($(expression).css("left")) < 0) $(expression).css("left", 0);	//超出宽度

		$(expression).fadeIn("slow");
	},

	//将带有编辑器的表单移至中心位置
	goCenterForm : function(expression, editorId) {
		$(expression).show();	
		
		if($("#"+editorId).css("display") != "none") {	//显示编辑器
			KE.create(editorId);
		}
		
		$(expression).hide();
		$.goCenter(expression);
	}
});

jQuery.fn.extend({
	goCenter : function() {	//将一个元素放至中心
		$.goCenter(this);
	},
	
	//通过Ajax即时按Index调用列表[JSON](绑定事件)
	sug : function($url, $var) {
		var $obj = $(this);	//当前操作输入框

		$obj.attr("autocomplete", "off");	//关闭自动完成
		$(this).blur(function(){	//光标离开，下拉框隐藏
			$("#sug").remove();
		})

		//绑定键盘事件
		$(this).keydown(function(event){
			if(event.keyCode != 38 && event.keyCode != 40 && event.keyCode != 13) {
				return true;
			}

			var $td = $("#sug").find("td");
			var $now = $td.eq(0);	//暂定为当前无选择
			var $init = true;		//标记为第一次执行
			$td.each(function(){	//遍历所有的TD单元格
				if($(this).html() == $obj.val()) {	//找到了当前选择的项
					$now = $(this);
					$init = false;	//非第一次执行
					return false;
				}
			});


			switch (event.keyCode)	{	//根据键盘代码进行操作			
				case 38 :	//上
					$next = $now.parent().prev().children("td");
					if(!$next.length) {	//最顶上
						$next = $td.eq(0);
					}
					break;
				case 40 :	//下
					if($init) {	//第一次执行，选择第一个
						$next = $td.eq(0);
						break;
					}
					$next = $now.parent().next().children("td");
					if(!$next.length) {	//最底下
						$next = $td.eq($td.length - 1);
					}
					break;
				case 13 :	//回车键
					$("#sug").remove();
					$_formLock = true;	//表单锁
					return false;
			}

			$_changeLock = true;	//锁定不取消列表框
			$("#sug").find("td").removeClass("hover");	//清空所有的颜色
			$next.addClass("hover");		//将选中的颜色加上
			$obj.val($next.html());
		})

		
		//绑定输入变化事件(Firefox)
		$(this).bind("input",  function(){
			if($_changeLock) {	//已锁定不取消列表框，解锁，不操作
				$_changeLock = false;
			} else {
				$(this)._sug($url, $var);
			}

		});

		try {	//绑定输入变化事件(IE)
			$(this)[0].attachEvent('onpropertychange',function(o){
				if(o.propertyName == "value") {
					if($_changeLock) {	//已锁定不取消列表框，解锁，不操作
						$_changeLock = false;
					} else {
						$(event.srcElement)._sug($url, $var);
					}
				}
			});
		} catch (e) {}		
	},

	//通过Ajax即时按Index调用列表[JSON](核心方法)
	_sug : function($url, $var) {
		var $obj = $(this);	//输入框操作对象

	

		//取得数据表格
		$.getJSON($url, $var+"="+encodeURIComponent($(this).val()), function($result){
			if($("#sug").length > 0) {	//有sug对象，清空
				var $sug = true;
				$("#sug").html();
				var sug = $("#sug")[0];
			} else {		//没有sug对象，创建
				var $sug = false;
				var sug = document.createElement("div");

				var $offset = $obj.offset();	//顶左位置

				//创建sug对象
				$(sug).attr("id", "sug");
				$(sug).addClass("sug");
				$(sug).css("left", $offset.left);
				$(sug).css("top", $offset.top + $obj.height());
			}


			var $display = "<table>";
			for(var $k in $result) {
				$display += "<tr><td>"+$result[$k]+"</td></tr>";
			}
			$display += "</table>";
			$(sug).html($display);

			//绑定鼠标事件
			$(sug).find("td").mouseover(function(){
				$("#sug").find("td").removeClass("hover");	//清空所有的颜色
				$(this).addClass("hover");		//将选中的颜色加上
				$_changeLock = true;
				$obj.val($(this).html());
			}).mouseout(function(){
				$("#sug").find("td").removeClass("hover");	//清空所有的颜色
			}).click(function(){
				$("#sug").hide();
			});
			
			if(!$sug) {
				$("body").append(sug);	//显示对象
			}
			$(sug).show();
		});
		
	}
});

//删除编辑器的值
function clearEditor(id) {
    KE.g[id].iframeDoc.open();
    KE.g[id].iframeDoc.write(KE.util.getFullHtml(id));
    KE.g[id].iframeDoc.close();
    KE.g[id].newTextarea.value = '';
}

//插入编辑器的值
function insertHtml(id, html) {
	_id = id;
	_html = html;
	setTimeout("_insterHTML(_id, _html)", 1);
}

function _insterHTML(id, html) {
    KE.util.focus(id);
    KE.util.selection(id);
    KE.util.insertHtml(id, html);
}

$(document).ready(function(){
	$(":text").addClass("text");
})