﻿function OpenCodeWindow(obj){

    //alert(obj.toJSONString)
    //alert(obj.toJSONString())
	if(obj.DmGrp){// && obj.DmCod
	
	    var url = '/Commons/CodeTable/OpenCodeTable.do'
	    url = '/commons/paste.do?template=/codetable/2.0/codetable.htm'
	    url += '&DmGrp=' + obj.DmGrp
	   
	    if(obj.Url){   
			url = obj.Url
	    }
	    //alert(url)
       if((obj.DmGrp.toUpperCase() == 'ZB02' || obj.DmGrp.toUpperCase()=="BJ108") && obj.Condition.toUpperCase().substring(0,4)=="GBJD" ){
            url = '/Commons/CodeTable/OpenCodeTable.do';
        }
		var style = 'dialogHeight: 580px; dialogWidth:450px; edge: Raised;scroll:no;center: Yes; help: No;resizable: no; status: no;'
		if(url.indexOf('?') == -1){
		    url += '?random=' + Math.random()
		}else{
		    url += '&random=' + Math.random()
		}
		//alert(url)
	    var o = window.showModalDialog(url, obj, style)
	    return o
	}
	alert("please give me a obj at last with the one propertity {DmGrp:'codeTableName'[, DmCod:''][, Model:'multi'][, Url:'test.do']}")
	return null;
}

var CodeTable = {
    Verson: '1.0',
    Init:function(arr){
        if(!(arr instanceof Array)){
            alert("please give me a Array object like this [{eDmCod:inputA, eDmCpt:inputHiddenA, DmGrp:'codeTableA'},{eDmCod:inputB, eDmCpt:inputHiddenB, DmGrp:'codeTableB'},...]")
            return
        }
        if(typeof(autoCount) == 'undefined'){
            autoCount = 0
        }
        for(var i=0; i<arr.length; i++){
            var o = arr[i]
            if(o.eDmCpt && o.eDmCod && o.DmGrp){
                while(window['auto'+autoCount]){autoCount++}
                var configs = {
					instanceName: 'auto'+autoCount,
					textbox: o.eDmCpt,
					dataSource: [],
					height: 100,
					ignoreCase: false,
					ignoreWhere: true
				}
				
				var auto = new neverModules.modules.autocomplete(configs)
				o.eDmCpt.auto = auto
				o.eDmCpt.onkeyup = this.GetCode
				o.eDmCpt.o = o
				/*
				    allow user config fire event like this
				    CodeTable.Init([{
				        DmGrp : 'codeTableA',
				        DefaultFireEvent : false
				    }])
				    
				    if(!DefaultFireEvent){
				        return
				    }
				*/
				Event.observe(o.eDmCpt, 'blur', function(){
				    var e = Event.element(event)
				    if(e.o.eDmCod.value == ''){
				        e.value = ''
				    }
				})
				Event.observe(o.eDmCpt, 'keydown', function(){
				    var e = Event.element(event)
				    if(!e.auto)
				        return
				    if(event.keyCode==Event.KEY_RETURN && e.auto){
				        e.auto.handlerClose()
				        if(event.ctrlKey && e.ondblclick){
				            e.ondblclick()
				        }
				    }else if(event.keyCode == Event.KEY_TAB){
				        e.auto.handlerClose()
				    }
				}, false)
				
				if(o.eDmCpt.readOnly){
				    o.eDmCpt.ondblclick = null
				}else{	
	               
					if(typeof(o.Condition)=="undefined"){o.Condition=""};
				    //alert(o.Condition)
				   
				    if(o.DmGrp.toUpperCase() == 'PARTYMANA'&& false){
				       
				        o.Url = '/Commons/Paste.do?template=/CodeTable/CodeTable.htm'
				        o.eDmCpt.ondblclick = function(){OpenCodeWindow(this.o)}
				    }else{
				        if(o.DmGrp.toUpperCase() == 'ZB02' && o.Condition.toUpperCase() !="GBJD" && o.Condition.toUpperCase() != 'DYXXGL' && o.Condition.toUpperCase() !="GBJD_ZB02ALL") {
							    o.Url = '/Commons/CodeTable/CodeTable4G099.do?forward=orgtree_codetable'; 			      
				            if(o.Model)
				                o.Url += '&Model=' + o.Model
				            o.eDmCpt.ondblclick = function(){OpenCodeWindow(this.o)}
				        }
				        else{
				            o.eDmCpt.ondblclick = function(){OpenCodeWindow(this.o)}
				        }
				    }
				    
				}
            }
        }
    },
    
    UnInit : function(arr){
        for(var i=0; i<arr.length; i++){
            var ele = arr[i]
            ele.auto = null
            ele.ondblclick = null
            ele.onkeyup = null
            ele.onkeydown = null
        }
    },
    
    GetCode:function(){
        var myajax
	    keyCode = event.keyCode;
	    if(this.value == ''){
		    this.o.eDmCod.value = ''
		    this.auto.handlerClose()
		    return
	    }
	    if(keyCode == Event.KEY_TAB){
	        this.auto.handlerClose()
	        return
	    }
	    var paras = 'random='+Math.random()+'&DmGrp='+this.o.DmGrp;
	    
	    if(this.value.isInt() != null){
	        paras += '&DmCod='+this.value
	    }else if(escape(this.value).indexOf('%') != -1){
	        paras += '&DmCpt=' + encodeURIComponent(this.value)
	    }else{
	        paras += '&DmHnd=' + this.value
	    }
	    if(this.o.ColName){
	        paras += '&ColName=' + this.o.ColName
	    }
	    if(this.o.Condition){
	        paras += '&Condition=' + encodeURIComponent(this.o.Condition)
	    }
	    if(this.o.Security){
	        paras += '&Security=' + encodeURIComponent(this.o.Security)
	    }
	    if(this.o.OutSecurity){
			paras += '&OutSecurity=' + encodeURIComponent(this.o.OutSecurity)
		}
	    var url = '/Commons/CodeTable/SearchNodes4AutoComplete.do';
	    var searchKey = this.value
	    myajax = new Ajax.Request(
		    url,
		    {method:'get', parameters:paras, onComplete:function(request){ShowCode(request, keyCode, searchKey)}}
	    );
	    myajax.e = this
    	
	    function ShowCode(request, keyCode, searchKey){
	        //alert(request.responseText)
		    var arrCptCod = request.responseText.split(';')
		    var arrCpt = arrCptCod[0].split(',')
		    if(arrCpt[0].trim() == ''){
		        //输入的非法代码置为空值（保持视觉与实际一致）2007-08-30
		        myajax.e.value = ''
		        return
		    }
		    var arrCod = arrCptCod[1].split(',')
		    arrCpt.each(function(v, i){arrCpt[i]=arrCpt[i].trim()})
		    arrCod.each(function(v, i){arrCod[i]=arrCod[i].trim()})
		    var arr = [arrCpt, arrCod]
		    myajax.e.auto.clearDataSource()
		    if(arrCpt.length > 5)
			    myajax.e.auto.height = arrCpt.length*20 + 'px'
		    myajax.e.auto.setDataSource(arr)
		    myajax.e.auto.handlerEvent(keyCode)
		    
		    //搜索出准确结果帮助自动选择（包括复制粘贴的情况）2007-01-23
		    if(arrCpt.length>0 && (arrCpt[0]==searchKey || arrCod[0]==searchKey)){
		        myajax.e.auto.handlerEvent(Event.KEY_RETURN)
            }
	    }
    }
}