﻿/***************************
 * LES Anwendung - Aktenzeichen Object
 ***************************
 * This object offers possibilities to autosuggest aktenzeichen.
 * 
 * 
 * Last modified: 2007-06-08
 * Implementation by:
 *  Michael Bertsch <michael.bertsch@gmg.biz>
 */

function Aktenzeichen(typ) {

    this.aktid;
    this.textlength;
    this.startval;
    this.typ = typ;
    this.last;
	
	this.init = function() {
		this.textbox = document.getElementById("txtaktensearch");
	    this.auswahl = document.getElementById("aktenzeichen");
	    this.auswahl.innerHTML = "";
	    this.textlength = 0;
	    this.aktid = "";
	    this.last = "";
        this.startval = "";
		tools.deleteEventListener(document,'keydown',this.keyDownHandler,false);
		tools.additionalEventListener(document,'keydown',this.keyDownHandler,false);
		this.textbox.focus();
		this.textbox.select();
	}
	
	// handles key events 
	this.keyDownHandler = function(evt) {
	    var range = (document.all) ? document.selection.createRange().parentElement() : window.getSelection().anchorNode;
	   
	    if(range.getAttribute('name') != null && range.getAttribute('name') == "akten") {
		    if (!evt) 
			    var evt = window.event;
		    evt = (evt) ? evt : ((event) ? event : null);
		    key = evt.keyCode ? evt.keyCode : evt.which;
		   
		    if (key == 38 && document.getElementById(akten.aktid).previousSibling) {
		        akten.highlight(document.getElementById(akten.aktid).previousSibling.id);
		    } else if(key == 40 && document.getElementById(akten.aktid).nextSibling) {
		        akten.highlight(document.getElementById(akten.aktid).nextSibling.id);
		    } else if(key == 13) {
		      //  akten.showResult();
		        // disable key press porcessing
			   if ( evt.preventDefault )
		            evt.preventDefault();
	            else evt.returnValue = false;
            	
	            return false;
		    }
		}
	}
	
	this.getAkten = function()
    {
        window.clearTimeout(this.aktentime);
        
        var s = akten.textbox.value.replace("'","");
        if(s.length > 0 && s != this.aktword){
            this.aktword = s;
            this.aktentime = window.setTimeout("akten.SearchAkten()",1000);
        }
    }
    
    this.SearchAkten = function() {
        window.clearTimeout(this.aktentime);
        EDBAnwendung.Default.selAkten(akten.aktword,akten.cbGetAkten);
    }

    this.cbGetAkten = function(res) {
       if(res.error != null) {
		    alert(res.error.Message);
		    return;
	    }
        if(res.value.length > 0) 
           akten.setResult(res.value);	    
        else akten.auswahl.innerHTML = "Keine Aktenzeichen gefunden";
    }
    
    this.searchstichw = null;
    this.keydown = false;
    this.aktentime;
    this.aktword = "";

    this.getStw = function(forcesearch)
    {
	    window.clearTimeout(akten.searchstichw);
	    akten.searchstichw = window.setTimeout("akten.searchstw("+forcesearch+")",300);
    }

    this.searchstw = function(forcesearch) {	
	    window.clearTimeout(akten.searchstichw);
	    var s = akten.textbox.value;
        if(s.replace("'","").length > 0){
            if(akten.last != s || forcesearch) {
                akten.last = s;
                akten.auswahl.innerHTML = "Suche gestartet";
                if(document.getElementById("rbStwGanz").checked)
                    EDBAnwendung.Default.selStw(s,1,akten.cbGetStw);
                else EDBAnwendung.Default.selStw(s,0,akten.cbGetStw);
            }
        } else akten.init();
    }

    this.cbGetStw = function(res) {
        if(res.error != null) {
		    alert(res.error.Message);
		    return;
	    }
        if(res.value.length > 0) 
           akten.setResult(res.value);	    
        else {
            akten.auswahl.innerHTML = "Keine Stichworte gefunden";
            akten.textlength = 0;
        }
    }
	
	this.setResult = function(res) {
        var vals = "";
        var isin = false;
        for(var h=0; h<res.length; h++) {
            vals += "<div id='aktenz"+h+"' onmouseover=\"showa('aktenz"+h+"');\" name='"+res[h]+"'";
            if(this.startval == res[h]) {
                this.aktid = "aktenz"+h;
                isin = true;
                vals += " class='aktenz sel'>"
            } else vals += " class='aktenz'>"
            if(akten.typ == "akten")
                vals += "<a href='default.aspx?mode="+akten.typ+"&txtakt="+akten.textbox.value+"&value="+res[h]+"'>"+res[h]+"</a></div>";
            else vals += "<a href='default.aspx?mode="+akten.typ+"&txtakt="+document.getElementById("rbStwGanz").checked+"_"+akten.textbox.value+"&value="+res[h]+"'>"+res[h]+"</a></div>"; 
            
        }
        
        this.auswahl.innerHTML = vals;
        
        if(!isin)
            this.highlight("aktenz0");
	}
	this.highlight = function(id) {
	    //reset old
	    if(document.getElementById(akten.aktid))
	        if(document.getElementById(akten.aktid).className != "aktenz sel")
	            document.getElementById(akten.aktid).className = "aktenz";
	    //set new
	    akten.aktid = id;
	    if(document.getElementById(akten.aktid))
	        if(document.getElementById(akten.aktid).className != "aktenz sel")
	            document.getElementById(akten.aktid).className = "aktenz high";
	}
	
	this.showResult = function() {
	    if(akten.typ == "akten")
	        var url = "default.aspx?mode="+akten.typ+"&txtakt="+akten.textbox.value+"&value="+document.getElementById(akten.aktid).getAttribute("name");
	    else var url = "default.aspx?mode="+akten.typ+"&txtakt="+document.getElementById("rbStwGanz").checked+"_"+akten.textbox.value+"&value="+document.getElementById(akten.aktid).getAttribute("name");
	    if(navigator.appName == "Opera") {
	        window.setTimeout('window.location.href = \"'+url+'\";',2);
	        window.setTimeout('window.location.href = \"'+url+'\";',20);
	        window.setTimeout('window.location.href = \"'+url+'\";',58);
	    }
	    
	    window.location.href = url;
	}
	
	this.setValue = function(txt, val) {
	    if(akten.typ == "stw") {
	        if(txt.indexOf("true_") == 0)
	            document.getElementById("rbStwGanz").checked = true;
	        txt = txt.replace("true_","").replace("false_","");
	    }    
	    this.textbox.value = txt;
        this.startval = val;
        if(this.typ == "akten")
	        akten.getAkten();
	    else akten.getStw();
	}
	
	this.init();
}

function showa(id) {
     akten.highlight(id);
}

function getAkten() { 
     akten.getAkten();
}

function getStw(v) {
     akten.getStw(v);
}
