/* Auto-suggest/auto-complete control
*
* original code:
* (C) 2004-2005 zichun
*
* fixes and heavy modifications:
* (C) 2007 Dmitriy Khudorozhkov (kh_dmitry2001@mail.ru) and contributors.
*
* This software is provided "as-is", without any express or implied warranty.
* In no event will the author be held liable for any damages arising from the
* use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
*    claim that you wrote the original software. If you use this software
*    in a product, an acknowledgment in the product documentation would be
*    appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
*    misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*/
//alert("chetan");
var suggesturl = ""; // Global link to the server-side script, that gives you the suggestion list.
// Used for controls that do not define their own server script urls.
// pre-load images:
var image = new Array(4);

image[0] = new Image(), image[1] = new Image(),
image[2] = new Image(), image[3] = new Image();

//image[0].src = "arrow-down.gif", image[1].src = "arrow-down-d.gif";
//image[2].src = "arrow-up.gif",   image[3].src = "arrow-up-d.gif"; 

function actb(id, Hide1, Hide2, LocationElem, Hide3, Hide4, url) {
    // Public Variables:

    this.actb_suggesturl = url || suggesturl;   // link to the server-side script, that gives you the suggestion list
    this.actb_timeOut = -1;                  // autocomplete Timeout in ms (-1: autocomplete never time out)
    this.actb_lim = 9;                   // number of elements autocomplete can show (-1: no limit)
    this.actb_firstText = true;                // should the auto complete be limited to the beginning of keyword?
    this.actb_fullRefresh = false;               // should the script re-send the AJAX request after each entered character?
    this.actb_useIFrame = false;               // should the control use an IFrame element to fix suggestion list positioning (MS IE only)?
    this.actb_useScroll = true;                // should the control use a scroll bar (true) or a up/down buttons (false)?
    this.actb_mouse = true;                // enable Mouse Support
    this.actb_noDefault = false;                // should the control omit selecting the 1st item in a suggestion list?
    this.actb_delimiter = new Array(';', ','); // delimiter for multiple autocomplete. Set it to empty array for single autocomplete
    // mskaka 05/20/2008
    this.actb_startcheck = 1;                   // show widget only after this number of characters is typed in.

    this.actb_selectedIndex = -1;                // index (zero-based) of the element last chosen

    // Styles:
    this.actb_arColor = '#656291';  // background color for the "arrows"
    this.actb_bgColor = '#FFFFFF';
    this.actb_textColor = '#000000';
    this.actb_hColor = '#D6D7E7';
    this.actb_fFamily = 'verdana,arial,helvetica';
    this.actb_arrowSize = "7px";
    this.actb_fSize = '10px';
    this.actb_hStyle = 'font-family:verdana,arial,helvetica;';

    // "Private" Variables:
    this.actb_delimwords = [];
    this.actb_cdelimword = 0;
    this.actb_delimchar = [];
    this.actb_display = false;

    this.actb_pos = 0;
    this.actb_total = 0;
    this.actb_rangeu = 0;
    this.actb_ranged = 0;
    this.actb_bool = [];
    this.actb_pre = 0;
    this.actb_toid = 0;
    this.actb_tomake = false;

    this.cur_x = 0;
    this.cur_y = 0;
    this.cur_w = 0;
    this.cur_h = 0;

    this.actb_mouse_on_list = 1;
    this.actb_caretmove = false;

    this.actb_base_id = id;
    this.actb_curr = document.getElementById(id);
    this.actb_keywords = [];

    this.actb_Hide1 = Hide1;
    this.actb_Hide2 = Hide2;
    this.actb_Hide3 = Hide3;
    this.actb_Hide4 = Hide4;

    this.LocationElem = LocationElem;
    //ca = ca || [];
    // kaka
    //for(var i = 0, cl = ca.length; i < cl; i++)
    //	this.actb_keywords[i] = ca[i];

    return this.construct();
};

actb.prototype = {

    callLater: function(func, obj)
    { return function() { func.call(obj) }; },

    construct: function() {
        this.actb_curr.actb = this;

        // pre-create event functions
        this.funcClick = this.actb_mouseclick;
        this.funcCheck = this.actb_checkkey;

        this.funcHighlight = this.actb_table_highlight;

        this.funcClear = this.callLater(this.actb_clear, this);
        this.funcPress = this.callLater(this.actb_keypress, this);

        this.funcUp = this.callLater(this.actb_goup, this);
        this.funcDown = this.callLater(this.actb_godown, this);

        this.funcFocus = this.callLater(this.actb_table_focus, this);
        this.funcUnfocus = this.callLater(this.actb_table_unfocus, this);

        addEvent(this.actb_curr, "focus", this.callLater(this.actb_setup, this));

        return this;
    },

    actb_setup: function() {
        addEvent(document, "keydown", this.funcCheck);
        addEvent(this.actb_curr, "blur", this.funcClear);
        addEvent(document, "keypress", this.funcPress);
    },

    actb_clear: function() {
        var msie = (document.all && !window.opera) ? true : false;
        var event = window.event;

        var doblur = true;
        if (msie && event && this.cur_h) {
            var x = event.x, y = event.y;

            if (((x > this.cur_x) && (x < (this.cur_x + this.cur_w))) && ((y > this.cur_y) && (y < (this.cur_y + this.cur_h)))) {
                this.actb_curr.focus();
                doblur = false;
            }
        }

        if (doblur) {
            removeEvent(document, "keydown", this.funcCheck);
            removeEvent(this.actb_curr, "blur", this.funcClear);
            removeEvent(document, "keypress", this.funcPress);

            this.actb_removedisp();
        }
    },

    actb_parse: function(n) {
        var t, plen;
        if (this.actb_delimiter.length > 0) {
            t = this.actb_delimwords[this.actb_cdelimword].trim().addslashes();
            plen = this.actb_delimwords[this.actb_cdelimword].trim().length;
        }
        else {
            t = this.actb_curr.value.addslashes();
            plen = this.actb_curr.value.length;
        }

        var tobuild = '';

        var re = this.actb_firstText ? new RegExp("^" + t, "i") : new RegExp(t, "i");
        var p = n.search(re);
        // kaka 05/26
        //		tobuild = n.substr(0, p);

        //		tobuild += "<u><font style='" + (this.actb_hStyle) + "'>";

        //		tobuild += n.substring(p, plen + p);

        //		tobuild += "</font></u>";

        //		tobuild += n.substring(plen + p, n.length);
        tobuild = n;
        return tobuild;
    },

    actb_generate: function() {

        if (document.getElementById('tat_table_' + this.actb_base_id)) {
            this.actb_display = false;
            document.body.removeChild(document.getElementById('tat_table_' + this.actb_base_id));
        }


        var BrowserDetect = {
            init: function() {
                this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
                this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
                this.OS = this.searchString(this.dataOS) || "an unknown OS";
            },

            searchString: function(data) {
                for (var i = 0; i < data.length; i++) {
                    var dataString = data[i].string;
                    var dataProp = data[i].prop;
                    this.versionSearchString = data[i].versionSearch || data[i].identity;
                    if (dataString) {
                        if (dataString.indexOf(data[i].subString) != -1)
                            return data[i].identity;
                    }
                    else if (dataProp)
                        return data[i].identity;
                }
            },

            searchVersion: function(dataString) {
                var index = dataString.indexOf(this.versionSearchString);
                if (index == -1) return;
                return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
            },

            dataBrowser: [
            //		    { 	string: navigator.userAgent,
            //			    subString: "OmniWeb",
            //			    versionSearch: "OmniWeb/",
            //			    identity: "OmniWeb"
            //		    },
		    {
		    string: navigator.vendor,
		    // string: navigator.userAgent,
		    // string: navigator.plathform,
		    subString: "Apple",
		    identity: "Safari"
		},
		     {
		         string: navigator.userAgent,
		         subString: "Gecko",
		         identity: "Mozilla",
		         versionSearch: "rv"
		     },
            //		    {
            //			    prop: window.opera,
            //			    identity: "Opera"
            //		    },
            //		    {
            //			    string: navigator.vendor,
            //			    subString: "iCab",
            //			    identity: "iCab"
            //		    },
            //		    {
            //			    string: navigator.vendor,
            //			    subString: "KDE",
            //			    identity: "Konqueror"
            //		    },
            //		    {
            //			    string: navigator.userAgent,
            //			    subString: "Firefox",
            //			    identity: "Firefox"
            //		    },
            //		    {
            //			    string: navigator.vendor,
            //			    subString: "Camino",
            //			    identity: "Camino"
            //		    },
		    {		// for newer Netscapes (6+)
		    string: navigator.userAgent,
		    subString: "Netscape",
		    identity: "Netscape"
		},
		    {
		        string: navigator.userAgent,
		        subString: "MSIE",
		        identity: "Explorer",
		        versionSearch: "MSIE"
		    },

		    { 		// for older Netscapes (4-)
		        string: navigator.userAgent,
		        subString: "Mozilla",
		        identity: "Netscape",
		        versionSearch: "Mozilla"
		    }
	    ],
            dataOS: [
		    {
		        string: navigator.platform,
		        subString: "Win",
		        identity: "Windows"
		    },
		    {
		        string: navigator.platform,
		        subString: "Mac",
		        identity: "Mac"
		    },
		    {
		        string: navigator.platform,
		        subString: "Linux",
		        identity: "Linux"
		    }
	    ]

        };
        BrowserDetect.init();

        if (this.actb_total == 0) {
            this.actb_display = false;
            //custom added 
            //Added By ankil 2 July
            if (BrowserDetect.browser == "Explorer") {
                if (BrowserDetect.version <= 6) {
                    var val2 = document.getElementById(this.actb_Hide1);
                    var val3 = document.getElementById(this.actb_Hide2);
                    val2.style.display = "block";
                    val3.style.display = "block";
                    var val1 = document.getElementById(this.actb_Hide3);
                    if (val1 != null) {
                        val1.style.display = "block";
                    }

                    var val4 = document.getElementById(this.actb_Hide4);
                    if (val4 != null) {
                        val4.style.display = "block";
                    }
                }
            }

            //End
            //end added
            return;
        }

        var msie = (document.all && !window.opera) ? true : false;
        //custom addede
        if (BrowserDetect.browser == "Explorer") {
            if (BrowserDetect.version <= 6) {
                var val2 = document.getElementById(this.actb_Hide1);
                var val3 = document.getElementById(this.actb_Hide2);
                //alert(val2.innerText);
                if (val2.id != "ctl00_cph_drpAgent") {
                    val2.style.display = "none";
                    val3.style.display = "none";
                }
                else {
                    val2.style.display = "block";
                    val3.style.display = "block";
                }
                var val1 = document.getElementById(this.actb_Hide3);
                if (val1 != null) {
                    val1.style.display = "none";
                }
                var val4 = document.getElementById(this.actb_Hide4);
                if (val4 != null) {
                    val4.style.display = "none";
                }

                //    	             if(this.actb_base_id =='ctl00_cph_txtlocation_buy' && this.actb_Hide1 == 'ctl00_cph_drpmaxrange_buy')
                //    	             {
                //    	                    val2.style.left = '570px';
                //	                        val2.style.top = '0px';
                //                            val3.style.left = '170px';
                //                            val3.style.top = '0px';
                //                            val1.style.left = '70px';
                //                            val1.style.top = '0px';
                //                            val4.style.top = '0px';
                //                            val4.style.left= '70px';
                //    	             }

            }

        }
        else if (BrowserDetect.browser == "Safari") {
            if (BrowserDetect.version >= 420) {
                var val2 = document.getElementById(this.actb_Hide1);
                var val3 = document.getElementById(this.actb_Hide2);
                var val1 = document.getElementById(this.actb_Hide3);
                var val4 = document.getElementById(this.actb_Hide4);

                if (this.actb_base_id == 'ctl00_cph_txtFormAdvanceSearch' || this.actb_base_id == 'ctl00_cph_txtLocation' || this.actb_base_id == 'ctl00_cph_txtlocation' || this.actb_base_id == 'ctl00_cph_lblLocation' || this.actb_base_id == 'ctl00_cph_drpAgent_no' || this.actb_base_id == 'ctl00_cph_txtlocation_ea_no') {
                    val2.style.left = '70px';
                    val2.style.top = '0px';
                    val3.style.left = '70px';
                    val3.style.top = '0px';
                    if (val1 != null) {
                        val1.style.left = '60px';
                        val1.style.top = '0px';
                    }
                    if (val4 != null) {
                        val4.style.top = '0px';
                        val4.style.left = '80px';
                    }
                }
                else {
                    val2.style.left = '107px';
                    val2.style.top = '0px';
                    val3.style.left = '107px';
                    val3.style.top = '0px';
                    if (val1 != null) {
                        val1.style.left = '107px';
                        val1.style.top = '0px';
                    }
                }
            }
        }
        else if (BrowserDetect.browser == "Mozilla" || BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Netscape") {
            if (BrowserDetect.version <= 2) {
                var val2 = document.getElementById(this.actb_Hide1);
                var val3 = document.getElementById(this.actb_Hide2);
                var val1 = document.getElementById(this.actb_Hide3);
                var val4 = document.getElementById(this.actb_Hide4);

                if (this.actb_base_id == 'ctl00_cph_txtFormAdvanceSearch' || this.actb_base_id == 'ctl00_cph_txtLocation' || this.actb_base_id == 'ctl00_cph_txtlocation' || this.actb_base_id == 'ctl00_cph_lblLocation' || this.actb_base_id == 'ctl00_cph_drpAgent_no' || this.actb_base_id == 'ctl00_cph_txtlocation_ea_no') {
                    val2.style.left = '70px';
                    val2.style.top = '0px';
                    val3.style.left = '70px';
                    val3.style.top = '0px';
                    if (val1 != null) {
                        val1.style.left = '60px';
                        val1.style.top = '0px';
                    }
                    if (val4 != null) {
                        val4.style.top = '0px';
                        val4.style.left = '80px';
                    }
                }
                else {
                    val2.style.left = '107px';
                    val2.style.top = '0px';
                    val3.style.left = '107px';
                    val3.style.top = '0px';
                    if (val1 != null) {
                        val1.style.left = '107px';
                        val1.style.top = '0px';
                    }
                }
            }
        }

        //ened
        var bb = document.createElement('div');
        if (this.actb_base_id == 'ctl00_cph_txtFormAdvanceSearch' || this.actb_base_id == 'ctl00_cph_txtLocation' || this.actb_base_id == 'ctl00_cph_txtlocation_ea' || this.actb_base_id == 'ctl00_cph_txtlocation' || this.actb_base_id == 'ctl00_cph_lblLocation' || this.actb_base_id == 'ctl00_cph_drpAgent_no' || this.actb_base_id == 'ctl00_cph_txtlocation_ea_no' || this.actb_Hide1 == 'ctl00_cph_drpmaxrange_buy') {
            bb.id = 'tat_table_' + this.actb_base_id;
            bb.style.position = 'absolute';
            bb.style.border = '#000000 solid 1px';
            bb.style.zIndex = 5;
        }
        else {

            bb.id = 'tat_table_' + this.actb_base_id;
            bb.style.position = 'absolute';
            bb.style.border = '#000000 solid 1px';
        }
        this.cur_y = bb.style.top = eval(curTop(this.actb_curr) + this.actb_curr.offsetHeight) + "px";
        if (this.actb_base_id == 'ctl00_cph_txtFormAdvanceSearch' || this.actb_base_id == 'ctl00_cph_txtLocation' || this.actb_base_id == 'ctl00_cph_txtlocation') {
            if (BrowserDetect.browser == "Safari") {
                if (BrowserDetect.version >= 300 && BrowserDetect.version <= 400)
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 0) + "px";
                else if (BrowserDetect.version >= 420)
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 0) + "px";
            }
            else if (BrowserDetect.browser == "Mozilla" || BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Netscape") {
                if (BrowserDetect.version <= 7) {
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 0) + "px";

                }
                else {
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 200) + "px";
                }
            }
            else if (BrowserDetect.browser == "Explorer") {

                if (BrowserDetect.version >= 7) {

                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";
                    bb.style.zIndex = 10;
                }
                else {

                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";

                }
            }
        }
        else {

            if (BrowserDetect.browser == "Safari") {
                if (BrowserDetect.version >= 300 && BrowserDetect.version <= 400) {
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 0) + "px";
                }
                else if (BrowserDetect.version >= 420) {
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 0) + "px";

                }
            }
            else if (BrowserDetect.browser == "Mozilla" || BrowserDetect.browser == "Firefox" || BrowserDetect.browser == "Netscape") {
                if (BrowserDetect.version <= 7)
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 0) + "px";
                else
                    this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) + 200) + "px";
            }
            else if (BrowserDetect.browser == "Explorer") {
                if (BrowserDetect.version >= 7) {
                    if (this.actb_base_id == 'ctl00_cph_txtlocation_ea' && this.actb_Hide1 != 'ctl00_cph_drpAgent')
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";
                    else if (this.actb_base_id == 'ctl00_cph_lblLocation' || this.actb_base_id == 'ctl00_cph_drpAgent_no' || this.actb_base_id == 'ctl00_cph_txtlocation_ea_no')
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";
                    else if (this.actb_base_id == 'ctl00_cph_txtlocation_buy' && this.actb_Hide1 == 'ctl00_cph_drpmaxrange_buy')
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";
                    else
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 36) + "px";
                    bb.style.zIndex = 5;
                }
                else {
                    if (this.actb_base_id == 'ctl00_cph_txtlocation_ea' && this.actb_Hide1 != 'ctl00_cph_drpAgent')
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";
                    else if (this.actb_base_id == 'ctl00_cph_lblLocation' || this.actb_base_id == 'ctl00_cph_drpAgent_no' || this.actb_base_id == 'ctl00_cph_txtlocation_ea_no')
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";
                    else if (this.actb_base_id == 'ctl00_cph_txtlocation_buy' && this.actb_Hide1 == 'ctl00_cph_drpmaxrange_buy')
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 0) + "px";
                    else
                        this.cur_x = bb.style.left = eval(curLeft(this.actb_curr) - 36) + "px";


                }

            }
        }
        //	this.cur_x = bb.style.left = "311px";
        this.cur_w = bb.style.width = this.actb_curr.offsetWidth + "px";

        var cc = null;
        if (msie && this.actb_useIFrame) {
            var cc = document.createElement('iframe');
            cc.src = "";
            cc.scrolling = "no";
            cc.frameBorder = "0";

            cc.style.position = "absolute";

            cc.style.zIndex = -1;
            cc.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0);";
        }

        var a = document.createElement('table');
        a.cellSpacing = '1px';
        a.cellPadding = '2px';
        a.style.width = "100%";
        a.style.backgroundColor = this.actb_bgColor;
        a.id = 'tat_table2_' + this.actb_base_id;

        if (this.actb_useScroll && (this.actb_total > this.actb_lim)) {
            this.cur_h = bb.style.height = (this.actb_lim * parseInt(this.actb_fSize) + 3) + 2 + "px";

            bb.style.overflow = "auto";
            bb.style.overflowX = "hidden";
        }

        this.cur_y = parseInt(this.cur_y);
        this.cur_h = parseInt(this.cur_h);
        this.cur_x = parseInt(this.cur_x);
        this.cur_w = parseInt(this.cur_w);

        document.body.appendChild(bb);
        if (cc) {
            cc.style.top = a.offsetTop;
            cc.style.left = a.offsetLeft;

            bb.appendChild(cc);
        }
        bb.appendChild(a);

        var first = true, j = 1;

        if (this.actb_mouse) {
            a.onmouseout = this.funcUnfocus;
            a.onmouseover = this.funcFocus;
        }

        var counter = 0;


        for (var i = 0; i < this.actb_keywords.length; i++) {
            if (!this.actb_useScroll && ((this.actb_keywords.length > this.actb_lim) && (this.actb_total > this.actb_lim) && !i)) {
                var r = a.insertRow(-1);
                r.style.backgroundColor = this.actb_arColor;

                var c = r.insertCell(-1);
                c.style.color = this.actb_textColor;
                c.style.fontFamily = 'arial narrow';
                c.style.fontSize = this.actb_arrowSize;
                c.style.cursor = 'default';
                c.align = 'center';

                replaceHTML(c, image[3]);
                addEvent(c, "click", this.funcUp);
            }
            // kaka 
            if (this.actb_bool[i] && (this.actb_useScroll || (counter < this.actb_lim))) {
                counter++;
                var r = a.insertRow(-1);
                if (first && !this.actb_noDefault && !this.actb_tomake) {
                    r.style.backgroundColor = this.actb_hColor;
                    first = false;
                    this.actb_pos = counter;
                }
                else if (this.actb_pre == i) {
                    r.style.backgroundColor = this.actb_hColor;
                    first = false;
                    this.actb_pos = counter;
                }
                else {
                    r.style.backgroundColor = this.actb_bgColor;
                }

                r.id = 'tat_tr_' + this.actb_base_id + j;

                var c = r.insertCell(-1);
                c.style.color = this.actb_textColor;
                c.style.fontFamily = this.actb_fFamily;
                c.style.textAlign = 'left';
                c.style.fontSize = this.actb_fSize;
                c.innerHTML = this.actb_parse(this.actb_keywords[i]);
                c.id = 'tat_td_' + this.actb_base_id + j;

                c.actb = this;
                c.setAttribute('pos', j);

                if (this.actb_mouse) {
                    c.style.cursor = 'pointer';
                    addEvent(c, "click", this.funcClick);
                    c.onmouseover = this.funcHighlight;
                }

                j++;
            }
        }

        if (!this.actb_useScroll && (this.actb_total > this.actb_lim)) {
            var r = a.insertRow(-1);
            r.style.backgroundColor = this.actb_arColor;

            var c = r.insertCell(-1);
            c.style.color = this.actb_textColor;
            c.style.fontFamily = 'arial narrow';
            c.style.fontSize = this.actb_arrowSize;
            c.style.cursor = "pointer";
            c.align = 'center';
            replaceHTML(c, image[0]);

            addEvent(c, "click", this.funcDown);
        }

        this.actb_rangeu = 1;
        this.actb_ranged = j - 1;
        this.actb_display = true;
    },

    actb_remake: function() {
        var a = document.getElementById('tat_table2_' + this.actb_base_id);

        if (this.actb_mouse) {
            a.onmouseout = this.funcUnfocus;
            a.onmouseover = this.funcFocus;
        }

        var i, k = 0;
        var first = true;
        var j = 1;

        if (this.actb_total > this.actb_lim) {
            var b = (this.actb_rangeu > 1);

            var r = a.rows[k++];
            r.style.backgroundColor = this.actb_arColor;

            var c = r.firstChild;
            c.style.color = this.actb_textColor;
            c.style.fontFamily = 'arial narrow';
            c.style.fontSize = this.actb_arrowSize;
            c.style.cursor = 'default';
            c.align = 'center';

            replaceHTML(c, b ? image[2] : image[3]);

            if (b) {
                addEvent(c, "click", this.funcUp);
                c.style.cursor = 'pointer';
            }
            else {
                c.style.cursor = 'default';
            }
        }

        for (var i = 0; i < this.actb_keywords.length; i++) {
            if (this.actb_bool[i]) {
                if (j >= this.actb_rangeu && j <= this.actb_ranged) {
                    var r = a.rows[k++];
                    r.style.backgroundColor = this.actb_bgColor;
                    r.id = 'tat_tr_' + this.actb_base_id + j;

                    var c = r.firstChild;
                    c.style.color = this.actb_textColor;
                    c.style.fontFamily = this.actb_fFamily;
                    c.style.fontSize = this.actb_fSize;
                    c.innerHTML = this.actb_parse(this.actb_keywords[i]);
                    c.id = 'tat_td_' + this.actb_base_id + j;
                    c.setAttribute('pos', j);
                    j++;
                }
                else {
                    j++;
                }
            }

            if (j > this.actb_ranged) break;
        }

        if (this.actb_keywords.length > this.actb_lim) {
            var b = ((j - 1) < this.actb_total);

            var r = a.rows[k];
            r.style.backgroundColor = this.actb_arColor;

            var c = r.firstChild;
            c.style.color = this.actb_textColor;
            c.style.fontFamily = 'arial narrow';
            c.style.fontSize = this.actb_arrowSize;
            c.style.cursor = 'default';
            c.align = 'center';

            replaceHTML(c, b ? image[0] : image[1]);

            if (b) {
                addEvent(c, "click", this.funcDown);
                c.style.cursor = 'pointer';
            }
            else {
                c.style.cursor = 'default';
            }
        }
    },

    actb_goup: function() {
        this.actb_curr.focus();

        if (!this.actb_display) return;
        if (this.actb_pos <= 1) return;

        var t = document.getElementById('tat_tr_' + this.actb_base_id + this.actb_pos);
        if (t && t.style) t.style.backgroundColor = this.actb_bgColor;

        this.actb_pos--;
        t = document.getElementById('tat_tr_' + this.actb_base_id + this.actb_pos);

        if (this.actb_useScroll) {
            var base = document.getElementById('tat_table_' + this.actb_base_id);
            base.scrollTop = t.offsetTop;
        }
        else {
            if (this.actb_pos < this.actb_rangeu) {
                this.actb_rangeu--;
                this.actb_ranged--;
                this.actb_remake();
            }
        }

        if (t && t.style) t.style.backgroundColor = this.actb_hColor;

        if (this.actb_toid) {
            clearTimeout(this.actb_toid);
            this.actb_toid = 0;
        }

        if (this.actb_timeOut > 0)
            this.actb_toid = setTimeout(function() { this.actb_mouse_on_list = 1; this.actb_removedisp(); }, this.actb_timeOut);

        this.actb_curr.focus();
    },

    actb_godown: function() {
        this.actb_curr.focus();

        if (!this.actb_display) return;
        if (this.actb_pos == this.actb_total) return;

        if (this.actb_pos >= 1) {
            var t = document.getElementById('tat_tr_' + this.actb_base_id + this.actb_pos);
            if (t && t.style) t.style.backgroundColor = this.actb_bgColor;
        }
        else {
            this.actb_pos = 0;
        }

        this.actb_pos++;
        t = document.getElementById('tat_tr_' + this.actb_base_id + this.actb_pos);

        if (this.actb_useScroll) {
            var base = document.getElementById('tat_table_' + this.actb_base_id);
            base.scrollTop = t.offsetTop;
        }
        else {
            if (this.actb_pos > this.actb_ranged) {
                this.actb_rangeu++;
                this.actb_ranged++;
                this.actb_remake();
            }
        }

        if (t && t.style) t.style.backgroundColor = this.actb_hColor;

        if (this.actb_toid) {
            clearTimeout(this.actb_toid);
            this.actb_toid = 0;
        }

        if (this.actb_timeOut > 0)
            this.actb_toid = setTimeout(function() { this.actb_mouse_on_list = 1; this.actb_removedisp(); }, this.actb_timeOut);

        this.actb_curr.focus();
    },

    actb_mouseclick: function(event) {
        var elem = getTargetElement(event);
        if (!elem.id) elem = elem.parentNode;

        var obj = elem.actb;
        if (!obj.actb_display) return;

        obj.actb_mouse_on_list = 0;
        obj.actb_pos = elem.getAttribute('pos');
        obj.actb_selectedIndex = obj.actb_pos - 1;
        obj.actb_penter();

        //Addec By Ankil 2 July
        //		if(BrowserDetect.browser == "Explorer")
        //        {
        //            if(BrowserDetect.version  <= 6)
        //            {
        //                var val2= document.getElementById(this.actb_Hide1);
        //                var val3= document.getElementById(this.actb_Hide2);
        //                if(val2.id != "ctl00_cph_drpAgent")
        //                {
        //                     val2.style.display="none";
        //                     val3.style.display="none"; 
        //                }
        //                else
        //                {
        //                    val2.style.display="block";
        //                    val3.style.display="block";   
        //                } 
        //                 var val1 = document.getElementById(this.actb_Hide3);
        //    	             if (val1 != null)
        //    	             {
        //    	               val1.style.display="none";
        //    	             }
        //                 var val4 = document.getElementById(this.actb_Hide4);
        //    	             if (val4 != null)
        //    	             {
        //    	               val4.style.display="none";
        //    	             }

        //            }
        //        }
        // End

        var val2 = document.getElementById(this.actb_Hide1);
        var val3 = document.getElementById(this.actb_Hide2);
        if (val2 != null) {
            val2.style.display = "block";
            val3.style.display = "block";
        }

        var val1 = document.getElementById(this.actb_Hide3);
        if (val1 != null) {
            val1.style.display = "block";
        }
        var val4 = document.getElementById(this.actb_Hide4);
        if (val4 != null) {
            val4.style.display = "block";
        }
    },

    actb_table_focus: function() {
        this.actb_mouse_on_list = 1;
    },

    actb_table_unfocus: function() {
        this.actb_mouse_on_list = 0;

        if (this.actb_toid) {
            clearTimeout(this.actb_toid);
            this.actb_toid = 0;

        }

        if (this.actb_timeOut > 0)
            this.actb_toid = setTimeout(function() { obj.actb_mouse_on_list = 0; this.actb_removedisp(); }, this.actb_timeOut);
    },

    actb_table_highlight: function(event) {
        var elem = getTargetElement(event);

        var obj = elem.actb;
        if (!obj) return;

        obj.actb_mouse_on_list = 1;

        var row = document.getElementById('tat_tr_' + obj.actb_base_id + obj.actb_pos);
        if (row && row.style) row.style.backgroundColor = obj.actb_bgColor;

        obj.actb_pos = elem.getAttribute('pos');

        row = document.getElementById('tat_tr_' + obj.actb_base_id + obj.actb_pos);
        if (row && row.style)
            row.style.backgroundColor = obj.actb_hColor;

        if (obj.actb_toid) {
            clearTimeout(obj.actb_toid);
            obj.actb_toid = 0;
        }

        if (obj.actb_timeOut > 0)
            obj.actb_toid = setTimeout(function() { obj.actb_mouse_on_list = 0; obj.actb_removedisp(); }, obj.actb_timeOut);
    },

    actb_penter: function() {
        if (!this.actb_display) return;
        if (this.actb_pos < 1) return;

        this.actb_display = false;

        var word = '', c = 0;
        for (var i = 0; i <= this.actb_keywords.length; i++) {
            if (this.actb_bool[i]) c++;
            if (c == this.actb_pos) {
                word = this.actb_keywords[i];
                break;
            }
        }

        this.actb_insertword(word);
    },

    actb_insertword: function(a) {
        if (this.actb_delimiter.length > 0) {
            var str = '';

            for (var i = 0; i < this.actb_delimwords.length; i++) {
                if (this.actb_cdelimword == i) {
                    prespace = postspace = '';
                    gotbreak = false;
                    for (var j = 0; j < this.actb_delimwords[i].length; ++j) {
                        if (this.actb_delimwords[i].charAt(j) != ' ') {
                            gotbreak = true;
                            break;
                        }

                        prespace += ' ';
                    }

                    for (j = this.actb_delimwords[i].length - 1; j >= 0; --j) {
                        if (this.actb_delimwords[i].charAt(j) != ' ') break;
                        postspace += ' ';
                    }

                    str += prespace;
                    str += a;
                    if (gotbreak) str += postspace;
                }
                else {
                    str += this.actb_delimwords[i];
                }

                if (i != this.actb_delimwords.length - 1)
                    str += this.actb_delimchar[i];
            }

            this.actb_curr.value = str;
            setCaret(this.actb_curr, this.actb_curr.value.length);
        }
        else {
            this.actb_curr.value = a;
        }

        this.actb_mouse_on_list = 0;
        this.actb_removedisp();
    },

    actb_removedisp: function() {
        if (this.actb_mouse_on_list == 0) {
            this.actb_display = 0;

            var base = document.getElementById('tat_table_' + this.actb_base_id);
            if (base)
                document.body.removeChild(base);

            if (this.actb_toid) {
                clearTimeout(this.actb_toid);
                this.actb_toid = 0;
            }

            this.cur_x = 0;
            this.cur_y = 0;
            this.cur_w = 0;
            this.cur_h = 0;
            //custom added
            // Added By Ankil 2 July
            //			if(BrowserDetect.browser == "Explorer")
            //            {
            //                if(BrowserDetect.version  <= 6)
            //                {
            var val2 = document.getElementById(this.actb_Hide1);
            var val3 = document.getElementById(this.actb_Hide2);
            val2.style.display = "block";
            val3.style.display = "block";
            var val1 = document.getElementById(this.actb_Hide3);
            if (val1 != null) {
                val1.style.display = "block";
            }
            var val4 = document.getElementById(this.actb_Hide4);
            if (val4 != null) {
                val4.style.display = "block";
            }

            //                        }
            //            }
            // end
            //            var val2= document.getElementById(this.actb_Hide1);
            //            var val3= document.getElementById(this.actb_Hide2);  
            //            val2.style.display="block";
            //            val3.style.display="block";   
            //            var val1 = document.getElementById(this.actb_Hide3);
            //	                if (val1 != null)
            //	                {
            //	                  val1.style.display="block";
            //	                }
            //	                  var val4 = document.getElementById(this.actb_Hide4);
            //	                if (val4 != null)
            //	                {
            //	                  val4.style.display="block";
            //	                }

            //end added 
        }
    },

    actb_keypress: function(e) {
        if (this.actb_caretmove) stopEvent(e);
        return !this.actb_caretmove;
    },

    actb_checkkey: function(event) {
        event = event || window.event;

        var code = event.keyCode;
        var obj = getTargetElement(event).actb;
        obj.actb_caretmove = 0;

        var term = "";

        if (obj.actb_toid) {
            clearTimeout(obj.actb_toid);
            obj.actb_toid = 0;
        }

        switch (code) {
            case 38:
                obj.actb_goup();
                obj.actb_caretmove = 1;
                return false;
                break;

            case 40:
                obj.actb_godown();
                obj.actb_caretmove = 1;
                return false;
                break;

            case 27:
                term = obj.actb_curr.value;

                obj.actb_mouse_on_list = 0;
                obj.actb_removedisp();
                break;

            case 13:
                if (obj.actb_display) {
                    obj.actb_caretmove = 1;
                    obj.actb_penter();
                    return false;
                }
                break;

            case 9:
                if (obj.actb_display || obj.actb_toid) {
                    obj.actb_caretmove = 1;
                    obj.actb_penter();

                    setTimeout(function() { obj.actb_curr.focus(); }, 25);
                    return false;
                }
                break;

            default:
                obj.actb_toid = setTimeout(function() { obj.actb_tocomplete.call(obj, code) }, 500);
                break;
        }

        if (term.length) setTimeout(function() { obj.actb_curr.value = term; }, 25);
        return true;
    },

    actb_tocomplete: function(kc) {
        // kaka changed
        //var val1 = document.getElementById("ctl00_cph_txtHdLocations").value;
        var val1 = document.getElementById(this.LocationElem).value;
        //       ca1 = val1.split(',');
        ca1 = val1.split('#');
        for (var i = 0, cl = ca1.length; i < cl; i++)
            this.actb_keywords[i] = ca1[i];
        this.actb_total = ca1.length;
        if (this.actb_toid) {
            clearTimeout(this.actb_toid);
            this.actb_toid = 0;
        }
        else {
            return;
        }

        if (kc == 38 || kc == 40 || kc == 13) return;

        if (this.actb_display) {
            var word = 0;
            var c = 0;

            for (var i = 0; i <= this.actb_keywords.length; i++) {
                if (this.actb_bool[i]) c++;

                if (c == this.actb_pos) {
                    word = i;
                    break;
                }
            }

            this.actb_pre = word;
        }
        else {
            this.actb_pre = -1;
        }

        if (this.actb_curr.value == '') {
            this.actb_mouse_on_list = 0;
            this.actb_removedisp();
        }

        var ot, t;

        if (this.actb_delimiter.length > 0) {
            var caret_pos_end = this.actb_curr.value.length;

            var delim_split = '';
            for (var i = 0; i < this.actb_delimiter.length; i++)
                delim_split += this.actb_delimiter[i];

            delim_split = delim_split.addslashes();
            var delim_split_rx = new RegExp("([" + delim_split + "])");
            c = 0;
            this.actb_delimwords = [];
            this.actb_delimwords[0] = '';

            for (var i = 0, j = this.actb_curr.value.length; i < this.actb_curr.value.length; i++, j--) {
                if (this.actb_curr.value.substr(i, j).search(delim_split_rx) == 0) {
                    ma = this.actb_curr.value.substr(i, j).match(delim_split_rx);
                    this.actb_delimchar[c] = ma[1];
                    c++;
                    this.actb_delimwords[c] = '';
                }
                else {
                    this.actb_delimwords[c] += this.actb_curr.value.charAt(i);
                }
            }

            var l = 0;
            this.actb_cdelimword = -1;
            for (i = 0; i < this.actb_delimwords.length; i++) {
                if ((caret_pos_end >= l) && (caret_pos_end <= l + this.actb_delimwords[i].length))
                    this.actb_cdelimword = i;

                l += this.actb_delimwords[i].length + 1;
            }

            ot = this.actb_delimwords[this.actb_cdelimword].trim();
            t = this.actb_delimwords[this.actb_cdelimword].addslashes().trim();
        }
        else {
            ot = this.actb_curr.value;
            t = this.actb_curr.value.addslashes();
        }

        if (ot.length == 0) {
            this.actb_mouse_on_list = 0;
            this.actb_removedisp();
        }
        else if ((ot.length == 1) || this.actb_fullRefresh ||
		       ((ot.length > 1) && !this.actb_keywords.length) ||
		       ((ot.length > 1) && (this.actb_keywords[0].substr(0, 1).toLowerCase() != ot.substr(0, 1).toLowerCase()))) {
            var ot_ = ((ot.length > 1) && !this.actb_fullRefresh) ? ot.substr(0, 1) : ot;

            if (this.actb_suggesturl.length) {
                // create xmlhttprequest object:
                var http = null;
                if (typeof XMLHttpRequest != 'undefined') {
                    try {
                        http = new XMLHttpRequest();
                    }
                    catch (e) { http = null; }
                }
                else {
                    try {
                        http = new ActiveXObject("Msxml2.XMLHTTP");
                    }
                    catch (e) {
                        try {
                            http = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch (e) { http = null; }
                    }
                }

                if (http) {
                    // For local debugging in Mozilla/Firefox only!
                    /*try
                    {
                    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                    } catch (e) { }*/

                    if (http.overrideMimeType)
                        http.overrideMimeType('text/xml');

                    http.open("GET", this.actb_suggesturl + ot_, true);

                    var obj = this;
                    http.onreadystatechange = function(n) {
                        if (http.readyState == 4) {
                            if ((http.status == 200) || (http.status == 0)) {
                                var xmlDocument = null, tmpinfo = null;

                                try {
                                    xmlDocument = http.responseXML;
                                    tmpinfo = xmlDocument.getElementsByTagName('listdata').item(0).firstChild.data;
                                }
                                catch (e) {
                                    try {
                                        xmlDocument = (new DOMParser()).parseFromString(http.responseText, "text/xml");
                                        tmpinfo = xmlDocument.getElementsByTagName('listdata').item(0).firstChild.data;
                                    }
                                    catch (ee) { }
                                }

                                obj.actb_keywords = tmpinfo.split('|');
                                obj.done.call(obj, ot_, t);
                            }
                        }
                    }

                    http.send(null);
                }

                // xmlhttp object creation failed
                return;
            }
            else {
                this.done(ot, t);
            }
        }
        else {
            this.done(ot, t);
        }
    },

    done: function(ot, t) {

        if (ot.length < this.actb_startcheck) return;

        var re = new RegExp("^" + t, "i");

        this.actb_total = 0;
        this.actb_tomake = false;

        var al = this.actb_keywords.length;

        for (var i = 0; i < al; i++) {
            this.actb_bool[i] = false;
            if (re.test(this.actb_keywords[i])) {
                this.actb_total++;
                this.actb_bool[i] = true;

                if (this.actb_pre == i) this.actb_tomake = true;
            }
        }

        if (!this.actb_firstText) {
            var tmp = [];

            for (i = 0; i < al; i++) {
                if (this.actb_bool[i])
                    tmp[tmp.length] = this.actb_keywords[i];
            }

            re = new RegExp(t, "i");

            for (i = 0; i < al; i++) {
                if (re.test(this.actb_keywords[i]) && !this.actb_bool[i]) {
                    this.actb_total++;
                    this.actb_bool[i] = true;

                    if (this.actb_pre == i) this.actb_tomake = true;

                    tmp[tmp.length] = this.actb_keywords[i];
                }
            }

            for (i = 0; i < al; i++) {
                if (!this.actb_bool[i])
                    tmp[tmp.length] = this.actb_keywords[i];
            }

            for (i = 0; i < al; i++)
                this.actb_keywords[i] = tmp[i];

            for (i = 0; i < al; i++)
                this.actb_bool[i] = (i < this.actb_total) ? true : false;
        }

        if (this.actb_timeOut > 0)
            this.actb_toid = setTimeout(function() { this.actb_mouse_on_list = 0; this.actb_removedisp(); }, this.actb_timeOut);

        this.actb_generate();
    }
}

// Supplementary functions

// Add an event to the obj given
// event_name refers to the event trigger, without the "on", like click or mouseover
// func_name refers to the function callback when event is triggered
function addEvent(obj, event_name, func_ref) {
    if (obj.addEventListener && !window.opera) {
        obj.addEventListener(event_name, func_ref, true);
    }
    else {
        obj["on" + event_name] = func_ref;
    }
}

// Removes an event from the object
function removeEvent(obj, event_name, func_ref) {
    if (obj.removeEventListener && !window.opera) {
        obj.removeEventListener(event_name, func_ref, true);
    }
    else {
        obj["on" + event_name] = null;
    }
}

// Stop an event from bubbling up the event DOM
function stopEvent(event) {
    event = event || window.event;

    if (event.stopPropagation) event.stopPropagation();
    if (event.preventDefault) event.preventDefault();

    if (typeof event.cancelBubble != "undefined") {
        event.cancelBubble = true;
        event.returnValue = false;
    }

    return false;
}

// Get the obj that triggers off the event
function getTargetElement(event) {
    event = event || window.event;
    return event.srcElement || event.target;
}

// Sets the caret position to l in the object
function setCaret(obj, l) {
    obj.focus();

    if (obj.setSelectionRange) {
        obj.setSelectionRange(l, l);
    }
    else if (obj.createTextRange) {
        m = obj.createTextRange();
        m.moveStart('character', l);
        m.collapse();
        m.select();
    }
}

// String functions
String.prototype.addslashes = function() { return this.replace(/(["\\\.\|\[\]\^\*\+\?\$\(\)])/g, '\\$1'); }

String.prototype.trim = function() { return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); };

// Offset position from top of the screen
function curTop(obj) {
    var toreturn = 0;
    var tooffset = 0;
    while (obj) {
        toreturn += obj.offsetTop - (window.opera ? 0 : obj.scrollTop);
        tooffset = obj.scrollTop;
        obj = obj.offsetParent;
    }
    toreturn += tooffset;
    return toreturn;
}

// Offset position from left of the screen
function curLeft(obj) {
    var toreturn = 0;
    var tooffset = 0;
    while (obj) {
        toreturn += obj.offsetLeft - (window.opera ? 0 : obj.scrollLeft);
        tooffset = obj.scrollLeft;
        obj = obj.offsetParent;
    }
    // toreturn -= tooffset;
    return toreturn;
}

// Image installation
function replaceHTML(obj, oImg) {
    var el = obj.childNodes[0];
    while (el) {
        obj.removeChild(el);
        el = obj.childNodes[0];
    }

    obj.appendChild(oImg);
}
function testschetan() {
    alert("chaten");
}
