var cp = new cpaint();
cp.set_transfer_mode('post');
cp.set_response_type('text');
var lastKeyTyped = 0;
var delayPeriod  = 150; // Milisaniye
var minStrLength = 2;   // En az 2 karakter girilmeli
var popupDivId = 'DIV_TitleGroupPopup';
var KEY_UP 	  = 38;
var KEY_DOWN  = 40; 
var KEY_ENTER = 13;
var KEY_ESC	  = 27;
var KEY_TAB   = 9;
var currIndex = -1;
var FirstText = '';

// Nesnelere olayları kaydet
var names = ['group', 'title', 'p'];
for(var i=0; i<names.length; i++)
{
	var objs = document.getElementsByName(names[i]);
	for(var k=0; k<objs.length; k++)
	{
		if (document.addEventListener) 
		{
			objs[k].addEventListener('keydown', txtKeyPressed, false);
			objs[k].addEventListener('focus', txtKeyPressed, false);
			objs[k].addEventListener('focus', txtBlured, false);
		}
		else 
		{
			objs[k].attachEvent('onkeydown', txtKeyPressed);
			objs[k].attachEvent('onfocus', txtKeyPressed);
			objs[k].attachEvent('onblur', txtBlured);
		}
		objs[k].id = names[i] + k;
	}
}
var autoId = 10;

function AttachAutoComplete(obj)
{
	if (document.addEventListener) 
	{
		obj.addEventListener('keydown', txtKeyPressed, false);
		obj.addEventListener('focus', txtKeyPressed, false);
		obj.addEventListener('focus', txtBlured, false);
	}
	else 
	{
		obj.attachEvent('onkeydown', txtKeyPressed);
		obj.attachEvent('onfocus', txtKeyPressed);
		obj.attachEvent('onblur', txtBlured);
	}	
	
	if (obj.id == '' || obj.id == null)
		obj.id = "tamamla_" + autoId++; 
}

function txtBlured(e)
{
	if (this == window)
		obj = e.srcElement;
	else
		obj = this;
		
	obj.hasKeyFocus = false;
	setTimeout("TryCloseList('" + obj.id + "');", 200);
}

function TryCloseList(objId)
{
	if ($(objId).hasKeyFocus == false)
	{
		$(popupDivId).style.display = 'none';
		doVisible(true);		
	}
}

function txtKeyPressed(e)
{
	if (this == window)
		obj = e.srcElement;
	else
		obj = this;

	obj.hasKeyFocus = true;
	
	if (e.keyCode) 
		keyCode = e.keyCode;
	else if (e.which) 
		keyCode = e.which;
	else
		keyCode = -1;	

	if (keyCode == KEY_UP || keyCode == KEY_DOWN || keyCode == KEY_ENTER) 
	{
		HandleNavigationKey(keyCode, obj.id);
		return;
	}
	else if (keyCode == KEY_ESC || keyCode == KEY_TAB) 
	{
			if (keyCode == KEY_ESC && $(popupDivId).style.display != 'none') {
				obj.value = FirstText;
			}			
			$(popupDivId).style.display = 'none';
			doVisible(true);
			if (keyCode == KEY_TAB) 
				return true;
			else 
				return false;
	}		

	var str = obj.value;
	if (str.length < minStrLength) 
	{
		if (str.length == 0 && obj.getAttribute('method_name') == null) 
		{
			var str = '';

			if (obj.id.indexOf('group') < 0) 
				str = 'örnek: "Fizyoterapist" veya "Psikolog" ';
			else 
				str = 'örnek: "Özel Rehabilitasyon Merkezi" veya "Dernekler" ';								
			
			var div = RelocateCompaniesDiv(obj.id);
			div.innerHTML = str;
			doVisible(false);
		}
		return;
	}			
	
	if (keyCode >= 0) 
	{
		lastKeyTyped = new Date().getMilliseconds();
		setTimeout('GetList("' + obj.id + '")', delayPeriod);
	}	
}

function HandleNavigationKey(keyCode, objId)
{
	var tbl = document.getElementById(popupDivId).getElementsByTagName('TABLE');
	if (tbl && tbl.length > 0 )
	{
		tbl = tbl[0];
		if (tbl.rows.length == 0)
			return;
			
		if (currIndex != -1 && keyCode != KEY_ENTER)
			DbNameOut(tbl.rows[currIndex].cells[0]);		
			
		switch(keyCode)
		{
			case KEY_DOWN : 			

				if (currIndex != -1 && currIndex < tbl.rows.length - 1)
					currIndex++;
				else 
					currIndex = 0;
				DbNameOver(tbl.rows[currIndex].cells[0]);
				if($(popupDivId).style.display != 'none')				
					DbNameClicked(tbl.rows[currIndex].cells[0], objId, false);		
			break;	
			
			case KEY_UP :
				if (currIndex != -1 && currIndex > 0)									
					currIndex--;
				else
					currIndex = tbl.rows.length - 1;
				DbNameOver(tbl.rows[currIndex].cells[0]);
				if($(popupDivId).style.display != 'none')				
					DbNameClicked(tbl.rows[currIndex].cells[0], objId, false);		
			break;
			
			case KEY_ENTER:
				if (currIndex < 0) 
				{
					document.getElementById(popupDivId).style.display = 'none';
					doVisible(true);
				}
				else 
					DbNameClicked(tbl.rows[currIndex].cells[0], objId, true);		
		}		
	}
}

function GetList(objId)
{
	if (new Date().getMilliseconds() - lastKeyTyped > delayPeriod ) 
	{
		lastKeyTyped = new Date().getMilliseconds();
  		setTimeout('GetList("' + objId + '")', delayPeriod);
		return;
	}

	if ($(objId).getAttribute('method_name') == null) {
		if (objId.indexOf('group') < 0) 
			methodName = 'GetExpertTitlesAjax';
		else 
			methodName = 'GetCompanyGroupsAjax';
		
		//if (names[3]=='companies') methodName = 'GetCorporationsList';
		
	}
	else
		methodName = $(objId).getAttribute('method_name');
		
	cp.call(
		'ajax_tier.php', methodName, NameSearchResponse, 
		document.getElementById(objId).value, objId
	);
}

function NameSearchResponse(response)
{
	if (response.length > 0 )
	{
		eval(response); // result.names dizisi gelecek
		var div = RelocateCompaniesDiv(result.objId);
        if (typeof result.names != "undefined" && result.names.length > 0 )
        {
		    var html= '<table width=100% cellspacing=0 cellpadding=1 border=1 style="border-collapse:collapse;">';
		    for(var i=0; i<result.names.length; i++)
			    html += '<tr><td db_name="' + result.names[i] + '" ' + 
					    ' onmouseOver="DbNameOver(this)" ' + 
					    ' onmouseOut="DbNameOut(this)" ' +
					    
					    ' onclick="DbNameClicked(this, \'' + result.objId + '\', true)" >' + 
					     result.names[i] + '</td>' + 
					    '</tr>';				
		    html += '</table>';

		    div.innerHTML = html;
		    doVisible(false);
        }
		else if (typeof result.authorities != "undefined" && result.authorities.length > 0)
		{
		    var html= '<table cellspacing=0 cellpadding=1 border=1 style="table-layout: fixed; border-collapse:collapse; width:500px; background-color: white;">' + 
					  '<colgroup><col width="70%"><col width="30%"></colgroup>';
					
		    for(var i=0; i<result.ids.length; i++)
			    html += '<tr company_id="' + result.ids[i] + '">' + 
						' <td db_name="' + result.titles[i] + '" ' + 
					    ' onmouseOver="DbNameOver(this)" ' + 
					    ' onmouseOut="DbNameOut(this)" ' +					    
					    ' onclick="DbNameClicked(this, \'' + result.objId + '\', true)" >' + 
					     result.titles[i] + '</td>' +
						' <td db_name="' + result.titles[i] + '" ' + 
					    ' onmouseOver="DbNameOver(this)" ' + 
					    ' onmouseOut="DbNameOut(this)" ' +					    
					    ' onclick="DbNameClicked(this, \'' + result.objId + '\', true)" >' + 
					     result.cities[i] + '</td>' +						  
					    '</tr>';				
		    html += '</table>';

		    div.innerHTML = html;
		    doVisible(false);			
		}
        else
        {
            $(popupDivId).style.display = 'none';
            doVisible(true);
        }
	}
	else 
	{
		$(popupDivId).style.display = 'none';
		doVisible(true);
	}
	currIndex = -1;
}

function RelocateCompaniesDiv(txtObjId)
{
	var div = document.getElementById(popupDivId);
	var coords= GetTxtObjCoords(txtObjId);
	div.style.position = 'absolute';
	div.style.left	   = coords[0] + 'px';
	div.style.top	   = coords[1] + 'px';

	if(div.style.display == 'none')
		FirstText = $(txtObjId).value;				
	//div.style.height   = '100px';
	
	div.style.width	   = '300px';
	if (txtObjId =='email_title' || txtObjId =='email_title2')
		div.style.width	   = '500px';
	
	div.style.display  = 'inline';
	div.style.border   = '1px solid black';
	div.style.backgroundColor = 'white';
	div.style.fontSize = '11px';
	div.style.zIndex = 20000;
	
	return div;
}

function GetTxtObjCoords(txtObjId)
{
	var txtObj = document.getElementById(txtObjId);
	var coords = findPos(txtObj);
	coords[1] += txtObj.offsetHeight;
	
	return coords;
}

function DbNameOver(tdObj)
{
	tdObj.style.backgroundColor = 'yellow';
	tdObj.style.cursor = 'pointer';
	
	if (typeof jQuery != "undefined")
	{
		$($(tdObj).parents('TR').get(0)).find('TD').css({
			backgroundColor : 'yellow',
			cursor : 'pointer'
		});
	}
}

function DbNameOut(tdObj)
{
	tdObj.style.backgroundColor = '';
	tdObj.style.cursor = 'hand';
	
	if (typeof jQuery != "undefined")
	{
		$($(tdObj).parents('TR').get(0)).find('TD').css({
			backgroundColor : '',
			cursor : 'pointer'
		});
	}
	
}

function DbNameClicked(tdObj, objId, AutoClose)
{
	var name = tdObj.getAttribute('db_name');
	if (name )
	{
		$(objId).value = name;
		$(objId).setAttribute('company_id', $(tdObj).parents('TR').get(0).getAttribute('company_id'));
		if(AutoClose)
			document.getElementById(popupDivId).style.display = 'none';
		$(objId).focus();
		doVisible(true);
	}
}


