// 도메인 정보 확인
var $classAutoCompleteDomain = document.scripts.item(document.scripts.length-1).src.replace("//","\\").split("/").shift().replace("\\","//");

var capsLock   = false;
function AutoCompleteClass() {

	this.domain		= $classAutoCompleteDomain;
	this.head		= "";
	this.xmlPath    = "";

	this.css        = "";
	this.css_on     = "";
	this.txtObj     = "";
	this.count      = 10;

	this.id         = "";

	this.IE    = navigator.appName.indexOf("Microsoft") != -1 ? true : false;

	this.Search_area = "";

	this.fnSubmit   = "none";

	//Auto completed
	var oldValude;
	var xmlHttp;
	var selected;
	var divList;

	this.init = function(id, Search_area, obj){
		
		//필수 파라미터 체크
		if ((id == "" || id =="NULL" || typeof(Search_area) == "object" || Search_area == ""))
		{
			//alert("apple server message : 필수 파라미터 설정을 확인해 주세요.");
			return;
		}
		
		this.id = id;
		this.txtObj = document.getElementById(id);
	
		if (!this.txtObj)	{
			alert(id + " is not defined!");
			return;
		}
		
		// 기본 검색어 힌트 제거
		document.getElementById(id).setAttribute("autocomplete","off");

		var self = this;
		
		this.Search_area = Search_area;

		this.xmlPath = "/Common/xmlConvert.asp";

		if (typeof(obj) == "undefined") {

			this.css = "default";
			this.css_on = this.css + "_on";
			this.width = this.txtObj.clientWidth;
		}else{

			// 스타일 외부 지정
			if (typeof(obj.css) == "undefined") {
				this.css = "default";
				this.css_on = this.css + "_on";
			}else{
				this.css = obj.css;
				this.css_on = obj.css + "_on";
			}

			//자동완성 창 넓이
			if(typeof(obj.width) == "undefined") {
				this.width = this.txtObj.clientWidth;
			}else {
				this.width = obj.width;
			}
			
			//검색어 갯수
			if(typeof(obj.count) == "undefined") {
				this.count = 10;
			}else {
				this.count = obj.count;
			}			
			
			//경로
			if(typeof(obj.path) == "undefined") {
				this.xmlPath = "/Common/xmlConvert.asp";
			}else {
				this.xmlPath = obj.path;
			}

			//클릭, 엔터 호출 함수
			if(typeof(obj.fnSubmit) == "undefined") {
				this.fnSubmit = "none";
			}else {
				this.fnSubmit = obj.fnSubmit;
			}
		}

		divList = document.createElement("div");
		divList.id = "divAutoCom";
		divList.className = this.css;
		divList.style.display = "none";
		document.body.appendChild(divList);

		this.setCSS();
		
		

		//if (navigator.userAgent.indexOf('Safari') == -1 && navigator.appName.indexOf("Microsoft") == -1) {
			/*
			//this.fireFox();
			//this.addEvent(document.getElementById(id), 'keypress', keypress);
			//var keyup = function(e) { self.evtKeyup(e); } 
			
			var keyup = function(e) { self.evtKeyup(e); } 
			var keypress = function(e) { self.evtKeypress(e);} 
			var keyfireblur = function(e) { self.fireblur(); } 

			//키업 이벤트
			//this.addEvent(document.getElementById(id), 'keyup', keyup);


			//키프레스 이벤트

			this.addEvent(document.getElementById(id), 'keyup', keyup);
			this.addEvent(document.getElementById(id), 'keypress', keypress);
			this.addEvent(document.getElementById(id), 'blur', keyfireblur);
			*/

		//} else {
			
			/*
			var keyup = function(e) { self.evtKeyup(e); } 
			var keypress = function(e) { self.evtKeypress(e); } 


			//키업 이벤트
			this.addEvent(document.getElementById(id), 'keyup', keyup);


			//키프레스 이벤트
			this.addEvent(document.getElementById(id), 'keypress', keypress);
			*/
			var keyup = function(e) { self.evtKeyup(e); } 
			var keypress = function(e) { self.evtKeypress(e);} 
			var keyfireblur = function(e) { self.fireblur(); } 

			//키업 이벤트
			//this.addEvent(document.getElementById(id), 'keyup', keyup);


			//키프레스 이벤트

			this.addEvent(document.getElementById(id), 'keyup', keyup);
			this.addEvent(document.getElementById(id), 'keypress', keypress);
			this.addEvent(document.getElementById(id), 'blur', keyfireblur);
		//}
			
	}


	this.debug = function(msg){

		var debug_obj = document.getElementById("debugbox");

		if(!debug_obj){
			debug_obj = document.createElement("div");
			debug_obj.setAttribute("id","debugbox");
			debug_obj.id="debugbox";

			document.body.appendChild(debug_obj);

		}

		debug_obj.appendChild(document.createTextNode("\n"+msg));


	}



	this.fireblur = function(){
		
		var self = this;

		if(self.settimeout_key){

			//self.debug("fireblur" + self.settimeout_key);
			clearTimeout(self.settimeout_key);

		}else{
			//self.debug("fireblur not found");
		}

		self.settimeout_key=null;
		self.firePreviousKeyword = new Date().valueOf();
	}

	this.settimeout_key = null;

	this.fireTrigger = function(fn , time){

		var self = this;

		if(typeof(time)=="undefined") time = 100;

		if(self.settimeout_key==null){
			self.settimeout_key = setTimeout(fn,time); 
			//self.debug("regiddt" + self.settimeout_key);
		}
	}

	this.firePreviousKeyword = "";

	this.fireEvent = function(self){

		if(!self) self = this;
		var el = document.getElementById(self.id);

		//self.debug("fireEvent" + self.firePreviousKeyword + "," + self.settimeout_key);

		if(self.firePreviousKeyword!=el.value && self.settimeout_key!=null){
			self.firePreviousKeyword = el.value;
			self.doAutoComplete(el);
		}

//		self.debug("fireEvent");

		//self.debug("start" + new Date().valueOf());
		self.fireTrigger(function(){self.fireEvent(self)});
	}
	
	//이벤트
	this.addEvent = function (obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, useCapture);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			alert("Handler could not be attached");
		}
	}


	//외부 CSS셋팅
	this.setCSS = function () {
/*
		if (this.css != "") this.head = this.head.replace("cssfile",this.domain +"/GAComplete/css/"+ this.css +".css");
		else this.head = this.head.replace("cssfile", this.domain +"/GAComplete/css/default.css");
*/
		if (this.css != "") this.head = this.domain +"/GAComplete/css/"+ this.css +".css";
		else this.head = this.domain +"/GAComplete/css/default.css";

		this.headTag=document.getElementsByTagName("head").item(0);		
		try{this.headTag.removeChild(this.setCss);}catch(e){};
		this.setCss = document.createElement("link");
		this.setCss.setAttribute("type", "text/css");   
		this.setCss.setAttribute("href", this.head);
		this.setCss.setAttribute("rel","stylesheet");
		this.headTag.appendChild(this.setCss);


/*		
		//var header = document.body;
		var header = (self.innerHeight)? document.body : document.documentElement;
		//header.innerHTML += this.head;

		header.appendChild(document.createElement(this.head));
		//	document.write();
*/
	}


	//방향키
	this.keycontrol = function(event){	
		var divNode = document.getElementById("divAutoCom").firstChild;
		var nextselected = null;

		if ( (event.keyCode  == 40 || event.keyCode  == 38) && selected == null){
			if (divNode == null) {
				return;
			}
			selected = divNode.firstChild;
			selected.className = this.css_on;
			if (this.IE) {
				document.getElementById(this.id).value = selected.innerText;
			} else {
				document.getElementById(this.id).value = selected.textContent;
			}
			return;
		}else if (event.keyCode == 13 && selected == null){
			document.getElementById("divAutoCom").style.display = "none";
			return;
		}

		//방향키 up
		if (event.keyCode == 38){
			if (selected.previousSibling != null){
				nextselected = selected.previousSibling;
				if (this.IE) {
					document.getElementById(this.id).value = selected.previousSibling.innerText;
				} else {
					document.getElementById(this.id).value = selected.previousSibling.textContent;
				}
			}

		//방향키 down
		} else if ( event.keyCode  == 40){

			if (selected.nextSibling != null){
				nextselected = selected.nextSibling;
				if (this.IE){
					document.getElementById(this.id).value = selected.nextSibling.innerText;
				} else {
					document.getElementById(this.id).value = selected.nextSibling.textContent;
				}				
			}
			
		//엔터
		}else if ( event.keyCode  == 13){
			if (selected) {				
				document.getElementById(this.id).value = (selected.firstChild.innerHTML).replace("&amp;","&");
				document.getElementById("divAutoCom").style.display = "none";
			}
			if (this.fnSubmit != "none")
			{
				eval(this.fnSubmit);
			}
		}

		selected.className = "";

		if(nextselected){
			selected = nextselected;
		}

		selected.className = this.css_on;
	}

	this.createXMLHttpRequest = function (){
		if (window.ActiveXObject)
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			this.browser = 1;
		}
		else if (window.XMLHttpRequest)
		{
			xmlHttp = new XMLHttpRequest();
			this.browser = 2;
		}
	}

	//Create XMLHTTPRequest Object
	this.doAutoComplete = function(Search_Text){
		var self = this;			
		var SearchQuery_Obj = Search_Text;
		var pramValue;
		var Search_Text_value = Search_Text.value;
		if(document.getElementById("pram")){
			var pram = document.getElementById("pram").value;
		}

		this.createXMLHttpRequest();

		Search_Text_org = self.trim(Search_Text_value);

		if (self.checkEnglishOnly(Search_Text_org))	{
			Search_Text_value = self.toKorean(Search_Text_org);
			Search_Text_start = self.koreaReplace(Search_Text_value,2);			
			Search_Text_end = self.koreaReplace(Search_Text_value,3);
			Search_text_kte = Search_Text_org;
			if (Search_Text_value == Search_Text_start)	{
				Search_Text_value = "";
			}
			if (self.checkEnglishOnly(Search_Text_start)){
				Search_Text_start = "";
				Search_Text_end = "";

			}
		}else if (self.checkKoreanOnly(Search_Text_org)){
			Search_Text_value = Search_Text_org;
			Search_Text_start = self.koreaReplace(Search_Text_org,2);
			Search_Text_end = self.koreaReplace(Search_Text_org,3);
			Search_text_kte = self.korToEngReplace(Search_Text_org);
			if (Search_Text_value == Search_Text_start)
			{
				Search_Text_value = "";
			}			
		}else{
			Search_Text_value = Search_Text_org;
			Search_Text_start = "";
			Search_Text_end = "";
			Search_text_kte = "";
		}

		Search_count = self.count;

		var str_tb = "pram="+pram+"&Search_Text="+Search_Text_value+"&Search_Text_start="+Search_Text_start+"&Search_Text_end="+Search_Text_end+"&Search_count="+Search_count+"&Search_text_kte="+Search_text_kte+"&Search_area="+this.Search_area;
		xmlHttp.open("POST",this.xmlPath,true);
		xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

		xmlHttp.onreadystatechange = function(){
			if (xmlHttp.readyState == 4)
			{
				if (xmlHttp.status == 200)
				{
					var results = xmlHttp.responseXML;
					var records_2 = results.getElementsByTagName("item");

					if (xmlHttp.status == 200)
					{
						selected = null;
						self.AutoCompleteList(records_2, SearchQuery_Obj);
					}
					else
					{
						var lavel = document.getElementById("error_Text");
						label.style.color = "red";
						label.innerHTML = "에러 발생 : " + xmlHttp.statusText;
					}
				}else if ( xmlHttp.status == 405)
				{
					//alert("apple server message : 해당 경로에 파일이 존재하지 않습니다.");
				}
			}
		};

		xmlHttp.send(str_tb);
		
	}

	this.AutoCompleteList = function(records, SearchQuery_Obj) {

		var ulList;
		var self = this;
		var el = document.getElementById(self.id);
/*
		//이미 자동완성용 ul가 존재한다면 그를 제거한다.
		if (document.getElementById("divAutoCom"))
		{
			document.getElementById("divAutoCom").parentNode.removeChild(document.getElementById("divAutoCom"));
		}
*/

		divList = document.getElementById("divAutoCom");
		divList.innerHTML = "";

		//검색결과가 없다면 작업 무효
		if (records.length == 0) {
			document.getElementById("divAutoCom").style.display = "none";
			return;
		}

		//새롭게 자동완성용 div 생성

		//ul 설정		
		ulList = document.createElement("ul");
		ulList.style.width = this.width;
		divList.appendChild(ulList);

		el.parentNode.insertBefore(divList,el);

		//각각의 이름 데이터를 <ul><a>에 추가해 넣는다.
		var item;
		var aTagItem;
		for (i = 0, c=records.length; i < c ; i++ )
		{
			item = document.createElement("li");
			item.id = "aTag"+i
			aTagItem = document.createElement("a");
			aTagItem.href = "#";
			aTagItem.innerHTML = records.item(i).firstChild.data;

			item.appendChild(aTagItem);
			ulList.appendChild(item);
			
			textItem = document.getElementById(self.id);
			
			//마우스 클릭 이벤트 핸들(텍스트박스)
			textItem.onmousedown = function(oEvent){
				oEvent = oEvent || window.event;
				oSrcElement = oEvent.target || oEvent.srcElement;
				if (document.getElementById("divAutoCom"))	{
//document.getElementById("divAutoCom").parentNode.removeChild(document.getElementById("divAutoCom"));
					document.getElementById("divAutoCom").style.display = "none";
				}				
			}

			//마우스 클릭 이벤트 핸들
			item.onmousedown = function(oEvent){
				oEvent = oEvent || window.event;
				oSrcElement = oEvent.target || oEvent.srcElement;
				document.getElementById(self.id).value = (oSrcElement.innerHTML).replace("&amp;","&");
				divList.style.display = "none";
				if (self.fnSubmit != "none")
				{
					eval(self.fnSubmit);
				}
			}

			//마우스 오버 이벤트 핸들
			aTagItem.onmouseover = function(oEvent){

				oEvent = oEvent || window.event;
				oSrcElement = oEvent.target || oEvent.srcElement;

				if(oSrcElement.tagName=="A") oSrcElement = oSrcElement.parentNode;

				if (selected){
					selected.className="";
				}

				selected = oSrcElement;

				selected.className = self.css_on;
			}
		}

		divList.style.display = "block";
	}

	//텍스트박스 다음에 삽입
	this.insertAfter = function(newNode, referenceNode) {   
		refParentNode = referenceNode.parentNode;   
		if (referenceNode != refParentNode.lastChild)
			refParentNode.insertBefore(newNode, referenceNode.nextSibling);    
		else       
			refParentNode.appendChild(newNode); 
	}

	//영한변환
	var en_h = "rRseEfaqQtTdwWczxvg"; 
	var reg_h = "[" + en_h + "]"; 

	var en_b = { 
		k:0,o:1,i:2,O:3,j:4,p:5,u:6,P:7,h:8,hk:9,ho:10,hl:11,y:12,n:13,nj:14,np:15,nl:16,b:17,m:18,ml:19,l:20 
	} 
	var reg_b = "hk|ho|hl|nj|np|nl|ml|k|o|i|O|j|p|u|P|h|y|n|b|m|l"; 

	var en_f = { 
		"":0,r:1,R:2,rt:3,s:4,sw:5,sg:6,e:7,f:8,fr:9,fa:10,fq:11,ft:12,fx:13,fv:14,fg:15,a:16,q:17,qt:18,t:19,T:20,d:21,w:22,c:23,z:24,x:25,v:26,g:27 
	} 

	var kr_f = { 
		0:"",1:"r",2:"R",3:"rt",4:"s",5:"sw",6:"sg",7:"e",8:"f",9:"fr",10:"fa",11:"fq",12:"ft",13:"fx",14:"fv",15:"fg",16:"a",17:"q",18:"qt",19:"t",20:"T",21:"d",22:"w",23:"c",24:"z",25:"x",26:"v",27:"g" 
	} 
	var reg_f = "rt|sw|sg|fr|fa|fq|ft|fx|fv|fg|qt|r|R|s|e|f|a|q|t|T|d|w|c|z|x|v|g|"; 

	var reg_exp = new RegExp("("+reg_h+")("+reg_b+")((?:"+reg_f+")(?=(?:"+reg_h+")(?:"+reg_b+"))|(?:"+reg_f+"))","g"); 

	//str 원본 텍스트
	//mode 1 : 기본 변환 2 : 종성 시작 3 : 종성 종료
	this.toKorean = function(str) { 
		var tempstr = "";
		if (capsLock){
			for (i=0, c=str.length ; i<c ; i++ )	{
				chr = str.charAt(i).toLowerCase();
				if(str.charAt(i) == chr){
					chr = chr.toUpperCase();
				}
				tempstr += chr;
			}
			str = tempstr;
		}

		return str.replace(reg_exp,this.replace); 
			
		/*
		if (mode == 1){
			return str.replace(reg_exp,this.replace); 
		}
		else if (mode == 2){
			return str.replace(reg_exp,this.fsReplace); 
		}else{
			return str.replace(reg_exp,this.feReplace); 
		}
		*/
	} 

	//영한변환
	this.replace = function(str,h,b,f) {
		return String.fromCharCode(en_h.indexOf(h)*21*28 + en_b[b]*28 + en_f[f] + 44032); 
	} 

	//종성변환 시작어
	/*
	this.fsReplace = function(str,h,b,f) { 		
		if(f){
			var str = String.fromCharCode(en_h.indexOf(h)*21*28 + en_b[b]*28 + 0 + 44032); 
			str += String.fromCharCode( en_h.indexOf(f)*21*28 + 44032); 
			return str;
		}
		return String.fromCharCode(en_h.indexOf(h)*21*28 + en_b[b]*28 + en_f[f] + 44032); 
	}

	//종성변환 종료어
	this.feReplace = function(str,h,b,f) { 	
		if(f){
			var str = String.fromCharCode(en_h.indexOf(h)*21*28 + en_b[b]*28 + 0 + 44032); 
			// 588 다음 자음
			str += String.fromCharCode( en_h.indexOf(f)*21*28 + 44032 + 588); 
			return str;
		}
		return String.fromCharCode(en_h.indexOf(h)*21*28 + en_b[b]*28 + en_f[f] + 44032); 
	}
	*/

	var rCho =
            [ "r", "R", "s", "e", "E", "f", "a", "q", "Q", "t", "T", "d", "w", "W",
                "c", "z", "x", "v", "g" ];
    var rJung =
            [ "k", "o", "i", "O", "j", "p", "u", "P", "h", "hk", "ho", "hl", "y", "n",
                "nj", "np", "nl", "b", "m", "ml", "l" ];
    var rJong =
            [ "", "r", "R", "rt", "s", "sw", "sg", "e", "f", "fr", "fa", "fq", "ft", "fx",
                "fv", "fg", "a", "q", "qt", "t", "T", "d", "w", "c", "z", "x",
                "v", "g" ];
	var rJamo =
			[ "r","R","rt","s","sw","sg","e","E","f","fr","fa","fq","ft","fx","fv",
				"fg","a","q","Q","qt","t","T","d","w","W","c","z","x","v","g",
				"k","o","i","O","j","p","u","P","h","hk","ho","hl","y","n","nj","np","nl","b","m","ml","l" ];

	var cOnly =
			[ "가","까","나","나","다","다","다","따","라","라","라","라","라","라","라",
				"라","마","바","빠","사","사","싸","아","자","짜","차","카","타","파","하" ];

    var cho, jung, jong;

	this.korToEngReplace = function(str){
		var strCnt = String(str).length;
		var cStr = "";
		var nTmp;
		if (strCnt <= 0) return false;
		for (i=0 ; i < strCnt ; i++){
			nTmp = String(str).substring(i, i+1);
			nTmp = nTmp.charCodeAt(0);
			if (0x3131 <= nTmp && nTmp <= 0x318E){
				cStr = cStr + rJamo[(nTmp % 12593)];
			}else{
				nTmp = nTmp - 0xAC00;
				jong = nTmp % 28; // 종성
				jung = ((nTmp - jong) / 28 ) % 21 // 중성
				cho = ( ( (nTmp - jong) / 28 ) - jung ) / 21 // 초성
				cStr = cStr + rCho[cho]+rJung[jung]+rJong[jong];
			}			
		}
		return cStr;
	}

	this.koreaReplace = function(str, mode){
		
		var firstStr = str;
		if (1 > String(str).length)
		   lastStr = str;
		else {
		   var iLen = String(str).length;
		   lastStr = String(str).substring(iLen, iLen - 1);
		}
		
		
		var nTmp = lastStr.charCodeAt(0) - 0xAC00;
		var charCode = lastStr.charCodeAt(0);

		jong = nTmp % 28; // 종성
		jung = ((nTmp - jong) / 28 ) % 21 // 중성
		cho = ( ( (nTmp - jong) / 28 ) - jung ) / 21 // 초성
		
		jong = kr_f[jong];

		if (jong && mode == 2)
		{
			
			jongStr = String.fromCharCode(cho*21*28 + jung*28 + 0 + 44032);
			jongStr += String.fromCharCode(en_h.indexOf(jong)*21*28 + 44032);
			
		    str = String(str).substring(0,iLen - 1) + jongStr;
		}
		else if (charCode >= 12593 && charCode < 12623 && mode == 2)
		{
			choOnly = charCode - 12593;
			str = String(str).substring(0,iLen - 1) + cOnly[choOnly];
		}
		else if(jong && mode == 3){
			jongStr = String.fromCharCode(cho*21*28 + jung*28 + 0 + 44032);
			jongStr += String.fromCharCode(en_h.indexOf(jong)*21*28 + 44032 + 588);
			str = String(str).substring(0,iLen - 1) + jongStr;
		}else if ( charCode >= 12593 && charCode < 12623 && mode == 3 ){
			choOnly = charCode - 12593;
			str = String(str).substring(0,iLen - 1) + cOnly[choOnly+1];
		}else if (mode == 3)
		{
			jungStr = String.fromCharCode(cho*21*28 + jung*28 + 27 + 44032);
			str = String(str).substring(0,iLen - 1) + jungStr;
		}
		
		return str;

	}

	// 영문체크
	this.checkEnglishOnly = function( englishChar ) {      
		if ( englishChar == null ) return false ;		   
			for( var i=0 ; i <englishChar.length ;i++){          
			   var c=englishChar.charCodeAt(i);       
			   if( !( (  0x61 <= c && c <= 0x7A ) || ( 0x41 <= c && c <= 0x5A ) ) ) {         
				return false ;       
			   }
			}      
		return true ;
     
	}
	

	// 한글체크
	this.checkKoreanOnly = function( koreanChar ) {
	  if ( koreanChar == null ) return false ;
		for(var i=0 ; i < koreanChar.length ; i++){
			var c=koreanChar.charCodeAt(i);
			 if( !( ( 0xAC00 <= c && c <= 0xD7A3 ) || ( 0x3131 <= c && c <= 0x318E ) ) ) {
				return false ;
			 }
		}
		return true ;
	}
	
	//trim
	this.trim = function (str){ 
		s=str.split(" ",str.length) 
		return s.join("") 
	} 

}


AutoCompleteClass.prototype = {

		evtKeyup : function(e) {

			

			var self	= this;
			var IE		= (navigator.userAgent.toLowerCase().indexOf("msie") != -1);
			var el = document.getElementById(self.id);
			var key	= (IE) ? event.keyCode : e.which;

			//this.debug("end" + new Date().valueOf());
			self.fireblur();

			var obj_autocom = document.getElementById("divAutoCom");

			if (obj_autocom && (key == 38 || key == 40 || key == 13)){
				self.keycontrol(e);
			}else if (key == 13){
				return;
			}else if (obj_autocom && key == 27){
				el.value = "";
				//obj_autocom.parentNode.removeChild(obj_autocom);
				obj_autocom.style.display = "none";
			}else if (key == 37 || key == 39){
				return;
			}else{

				if (obj_autocom && (el.value == "" || el.value == null))
				{
					obj_autocom.style.display = "none";
				}else{	
					self.doAutoComplete(el);
				}
			}

			


			
		},
		
		evtKeypress : function(e) {
			var self = this;
			var IE		= (navigator.userAgent.toLowerCase().indexOf("msie") != -1);
			var el = document.getElementById(self.id);
			var key	= (IE) ? event.keyCode : e.which;
			var obj_autocom = document.getElementById("divAutoCom");

			var myKeyCode=0;
			var myShiftKey=false;			

			if ( document.all ) {
				myKeyCode	 = key;
				myShiftKey	 = event.shiftKey;
			}
			if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey ) {
				capsLock = true;
		    } else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey ) {
				capsLock = true;
			}else{
				capsLock = false;
			}

			if (navigator.userAgent.indexOf('Safari') == -1 && navigator.appName.indexOf("Microsoft") == -1) {
				self.fireEvent();
			}
		}

}


