



//#*************************************************SUGGEST LIST**********************************************

var a=0;
var b=0;
var suggestelement = "txtLocality";
var form_n = "form1";
var sample =Array();
var newflag = "";
var disable = Array();

function validate11() 
{
	if(newflag == "DOWN") return false;
	else return true;
}

function trim(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") {
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") {
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) {
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
   }
   return retValue;
}

function AutoSuggest(elem, formname)
{
	var me = this;
	this.elem = elem;
	this.eligible = new Array();
	this.inputText = null;
	this.highlighted = -1;
	this.div = document.getElementById("autosuggest");
	this.div.style.zIndex=1000;
	var TAB = 9;
	var ESC = 27;
	var KEYUP = 38;
	var KEYDN = 40;
	var ENTER = 13;
	var cntr = 0;
	var maxlist = 15;
        var flag_ie = false;
	
	elem.setAttribute("autocomplete","off");
	if(!elem.id)
	{
		var id = "autosuggest" + idCounter;
		idCounter++;
		elem.id = id;
	}

/*	elem.onfocus=function(ev)
	{
	         if(trim(this.value).length > 0)
                        {
                                var str_input = this.value;
                                // CLEANUP STARTS
                                str_input = str_input.replace(/[@,;:!&\s]+/g," ");
                                str_input = str_input.replace(/^\s/,"");
                                // CLEANUP END
                                if(str_input.length <= 0) return;

                                me.inputText = str_input;
                                var return_len = me.getEligible();
                                if(return_len > 0)
                                {
                                        me.createDiv();
                                        me.positionDiv();
                                        me.showDiv();
                                }
                                else
                                {
                                        me.hideDiv();
                                }
                        }
                        else
                        {
                                me.hideDiv();
                        }
               

	};*/

	elem.onblur = function(ev)
	{
		me.hideDiv();
	};

	elem.onkeydown = function(ev)
	{
newflag = "";
		var key = me.getKeyCode(ev);
		switch(key)
		{
			case TAB:
			me.useSuggestion();
			break;

                        case ENTER:
			newflag = "DOWN";
                        var val_ret = me.useSuggestion();
			if(val_ret == 0) //document.forms[formname].submit();
                        break;

			case ESC:
			me.hideDiv();
			break;

			case KEYUP:
			if (me.highlighted > 0)
			{
				me.highlighted--;
			}
			me.changeHighlight(key);
			break;

			case KEYDN:
                        if (me.highlighted < (me.eligible.length - 1) && me.highlighted < (maxlist-1))
			{
				me.highlighted++;
			}
			me.changeHighlight(key);
			break;
		}
	};

	elem.onkeyup = function(ev) 
	{
	
newflag = "";
		var key = me.getKeyCode(ev);
		switch(key)
		{
		case ENTER: 
newflag = "DOWN";
		case TAB:
		case ESC:
		case KEYUP:
		case KEYDN:
			return;
		default:
		 me.highlighted=0;
		if(trim(this.value).length > 0)
			{	var loc_arr=document.form1.locality_arr.value;
				var sub_arr=loc_arr.substring(0,1);
				var loc=document.form1.txtLocality.value;
				var sub=loc.substring(0,1);
					if(sub.toLowerCase()==sub_arr.toLowerCase())
					{
	                                var str_input = this.value;
        	                        // CLEANUP STARTS
                	                str_input = str_input.replace(/[@,;:!&\s]+/g," ");
                        	        str_input = str_input.replace(/^\s/,"");
                                	// CLEANUP END
	                                if(str_input.length <= 0) return;
	
        	                        me.inputText = str_input;
                	                var return_len = me.getEligible();
					if(return_len > 0)
						{
						me.createDiv();
						me.positionDiv();
						me.showDiv();
						}
					else
						{
						me.hideDiv();
						}
					}
				else
				{
				 me.hideDiv();
				 sample="";
                                 document.form1.locality_arr.value="";
				 getdata(loc,0,document.form1.cmbCity.value);
/*                                 me.elem.onkeyup = function()
                                 {       getdata(loc,0,document.form1.cmbCity.value); };
                                 me.elem.onblur = function(){};
                                 me.elem.onkeydown = function(){};*/
                                 sample="";

				}
			}
			else
			{
				me.hideDiv();
				sample="";
                                document.form1.locality_arr.value="";
				me.elem.onkeyup = function()
				{	getdata(this.value,0,document.form1.cmbCity.value); };
				me.elem.onblur = function(){};
				me.elem.onkeydown = function(){};
				break;
			}
		}
	};


	this.useSuggestion=function()
	{
		if (this.highlighted > -1)
		{
			this.elem.value =this.eligible[this.highlighted];
			this.hideDiv();
			//setTimeout("document.getElementById('" + this.elem.id + "').focus()",0);
			return 1;
		}
		else
			return 0;
	};
	this.showDiv = function()
	{
		this.div.style.display = 'block';

                if(disable && flag_ie)
                {
                        var i;
                        for(i=0;i<disable.length;i++)
                        {
                                if(cntr > 3)
                                {
                                        document.getElementById(disable[i]).style.visibility = 'hidden';
                                }
                                else
                                {
                                        document.getElementById(disable[i]).style.visibility = 'visible';
                                }
                        }// end of for()
                } // end of if()
	};
	this.hideDiv = function()
	{
		this.div.style.display = 'none';
		this.highlighted = -1;
                this.eligible = new Array();

                if(disable && flag_ie)
                {
                        var i;
                        for(i=0;i<disable.length;i++)
                        {
                                document.getElementById(disable[i]).style.visibility = 'visible';          }// end of for()
                } // end of if()

		//if(newflag == "DOWN") document.forms[formname].submit();
	};
	this.changeHighlight = function()
	{
		var lis = this.div.getElementsByTagName('LI');
		for (i in lis)
		{
			var li = lis[i];

			if (this.highlighted == i)
			{
				li.className = "selected";
			}
			else
			{
				li.className = "";
			}
		}
	};
	this.positionDiv = function()
	{
		var el = this.elem;
		var x = 0;
		var y = el.offsetHeight;
	
		while (el.offsetParent && el.tagName.toUpperCase() != 'BODY')
		{
			x += el.offsetLeft;
			y += el.offsetTop;
			el = el.offsetParent;
		}

		x += el.offsetLeft;
		y += el.offsetTop;

		this.div.style.left = x + 'px';
		this.div.style.top = y + 'px';
	};
	this.createDiv = function()
	{
		cntr = 0;
		var full_temparr = new Array();
		var ul = document.createElement('ul');
		for (i in this.eligible)
		{
			if(cntr == 15) break;
			var word = this.eligible[i];
			full_temparr[cntr++] = word; 
			var li = document.createElement('li');
			var a = document.createElement('a');
			a.href="javascript:setValue(\""+word+"\");";
			a.innerHTML = markbold(this.inputText.toLowerCase(),word.toLowerCase());
			li.appendChild(a);
			if (me.highlighted == i)
			{
				li.className = "selected";
			}
			ul.appendChild(li);
		}
		this.div.replaceChild(ul,this.div.childNodes[0]);
		ul.onmouseover = function(ev)
		{
			var target = me.getEventSource(ev);
			while (target.parentNode && target.tagName.toUpperCase() != 'LI')
			{
				target = target.parentNode;
			}
		
			var lis = me.div.getElementsByTagName('LI');
			
	
			for (i in lis)
			{
				var li = lis[i];
				if(li == target)
				{
					me.highlighted = i;
					break;
				}
			}
			me.changeHighlight();
		};
		ul.onmousedown = function(ev)
		{
			me.useSuggestion();
			me.hideDiv();
			me.cancelEvent(ev);
			return false;
		};
		this.div.className="suggestion_list";
		this.div.style.position = 'absolute';
	};
	this.getEligible = function()
	{
		this.eligible = new Array();
		for (i in sample) 
		{
			var suggestion = sample[i];
			var index = suggestion.toLowerCase().indexOf(this.inputText.toLowerCase());

			if(index == 0 || suggestion.charAt(index-1) == " ")
			{
				this.eligible[this.eligible.length]=suggestion;
			}
		}
		return this.eligible.length;
	};
	this.getKeyCode = function(ev)
	{
		if(ev)			//Moz
		{
                        flag_ie = false;
			return ev.keyCode;
		}
		if(window.event)	//IE
		{
                        flag_ie = true;
			return window.event.keyCode;
		}
	};
	this.getEventSource = function(ev)
	{
		if(ev)			//Moz
		{
			return ev.target;
		}
	
		if(window.event)	//IE
		{
			return window.event.srcElement;
		}
	};
	this.cancelEvent = function(ev)
	{
		if(ev)			//Moz
		{
			ev.preventDefault();
			ev.stopPropagation();
		}
		if(window.event)	//IE
		{
			window.event.returnValue = false;
		}
	};
	
	if(trim(this.elem.value).length > 0)
             {	
					
                                var str_input = this.elem.value;
                                // CLEANUP STARTS
                                str_input = str_input.replace(/[@,;:!&\s]+/g," ");
                                str_input = str_input.replace(/^\s/,"");
                                // CLEANUP END
                                if(str_input.length <= 0) return;

                                this.inputText = str_input;
                                var return_len = this.getEligible();
//				alert(return_len);
                                if(return_len > 0)
                                {
                                        this.createDiv();
                                        this.positionDiv();
                                        this.showDiv();
                                }
                                else
                                {
                                        this.hideDiv();
                                }
             }
       else
             {
                               this.hideDiv();
             }
}


function in_array(arr,str)
{
for (var i in arr) { if (arr[i] === str) return i; }
return -1;
}

function createAutoSuggest()
{
	new AutoSuggest(document.getElementById(suggestelement),form_n);
}
function markbold(str1,str2)
{
        index = str2.indexOf(str1);
        var str_ret="";
        str_ret += str2.substr(0,index);
        str_ret += "<b>"+str2.substr(index,str1.length)+"</b>";
        str_ret += str2.substr((index+str1.length),str2.length);
        return str_ret;
}

function setValue(val)
{
        document.getElementById(suggestelement).value=val;
}

function getdata(locality,request_from_ajax,city)
{
	document.form1.locality_arr.value='';
	if(trim(locality).length>0)
	{
		ajax_suggest_locality(locality,1,city);
		if(document.form1.locality_arr.value=='')
		{
			//alert('1');
			setTimeout("getdata2()",200);
		}
	}
}
	


function getdata2()
{
	var doc="";
	doc=document.form1.locality_arr.value;
	if(document.form1.locality_arr.value=='')
	{
		setTimeout("getdata2()",300);
	}
	else
	{
		position=doc.indexOf('$');
		if(position > 0)
			sample=document.form1.locality_arr.value.split('$');
		else
			sample=Array(doc);
	        if(document.getElementById(suggestelement))
        	{
	//		 alert("3");
	               createAutoSuggest();
		}
	}
}

/*function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else

      return true;
}*/
var idCounter = 0;




/*
function getData(obj) {

        // finds all TDs inside obj
        var arrTD = obj.getElementsByTagName('TD');
        // assigns TD value to form field
        document.getElementById('txtLocality').value = arrTD[0].innerHTML;
        // hides the DIV
        document.getElementById('countrySuggestItems').style.display = 'none';
        }

function lostFocus()
        {
         document.getElementById('countrySuggestItems').style.display = 'none';
        }

function getfocus(obj)
        {
        var len=document.getElementById('tb').rows.length;
        for (var j=0;j<len;j++)
                {
                var row=document.getElementById('tb').rows[j];
                row.style.backgroundColor="#FFFFFF";
                }

          // finds all TDs inside obj
        var arrTD = obj.getElementsByTagName('TD');
        obj.style.backgroundColor="#EEEEEE";
        // assigns TD value to form field
        document.getElementById('txtLocality').value = arrTD[0].innerHTML;
        }

function su_locality(locality,request_from_ajax,city,key)
        {
        var display=document.getElementById('countrySuggestItems').style.display;
        var i=-1;
        var table=document.getElementById('tb');
        if(table!=null)
                {
                var len=document.getElementById('tb').rows.length;
                for (var j=0;j<len;j++)
                        {
                        var row=document.getElementById('tb').rows[j];
                        row.style.backgroundColor="#FFFFFF";
                        var td= row.getElementsByTagName('TD');
                        var arrtd=td[0].innerHTML;
                        var loca=document.getElementById('txtLocality').value;
                        if(arrtd==loca)
                                {
                                var i=document.getElementById('tb').rows[j].id;
                                var len=document.getElementById('tb').rows[j].id;
                                }
                        }
                }
        if((key==40) && (display=='block'))
                {
                 if(i==(document.getElementById('tb').rows.length)-1)
                        i=0;
                else
                        i=parseInt(i)+1;
                var row=document.getElementById('tb').rows[i];
                row.style.backgroundColor="#EEEEEE";
                var arrTD=row.getElementsByTagName('TD');
                // assigns TD value to form field
                document.getElementById('txtLocality').value = arrTD[0].innerHTML;
                }
   else if((key==38) && (display=='block'))
                {
                len=len-1;
                if(len==-1)
                        len=(document.getElementById('tb').rows.length)-1;
                var row=document.getElementById('tb').rows[len];
                row.style.backgroundColor="#EEEEEE";
                var arrTD=row.getElementsByTagName('TD');
                // assigns TD value to form field
                document.getElementById('txtLocality').value = arrTD[0].innerHTML;
                len=len-1;
                }
        else
                ajax_suggest_locality(locality,1,city,key);
        }

*/
