﻿// JScript File

var contentHandler = new TagFinder(null); 

function TagFinder(divTag)
{
	var divTag;
	var txtTag;
	var selSpanTag;
	return divTag;
}

function AjaxDDL(divTag, action, txtTag, strproduct)
{
	contentHandler.divTag = divTag;
	contentHandler.txtTag = txtTag;
	var currValue = contentHandler.txtTag.value;
	var evt = this.event;
	if (!evt)
		evt = window.event;
	if (DivKeyHandler() == true)
	{
		if (currValue.length >= 3)
		{
			//debugger
			xmlHttp = new GetXmlHttpObject();
			if (xmlHttp)
			{
				var url;
				if (action == 'Cities')
				{
				//if (divTag.id == "acName")
				   url = '../Services/MainService.asmx/GetCities?prefix=' + currValue + "," + strproduct;
				//else
				   //url = 'Services/MainService.asmx/GetNames?prefix=' + currValue + "," + strproduct; 
				}
				//else
				//	url = 'Services/MainService.asmx/GetCities?prefix=' + currValue;
				xmlHttp.onreadystatechange = AjaxDDLResponseHandler;
				xmlHttp.open("GET", url, true);
				xmlHttp.send(null);
			}
			else
			{
				alert("Error! Your browser does not seem to support Ajax!");
			}
		}
	}
}

//var contentHandler = new TagFinder(null); 

//function TagFinder(divTag)
//{
//	var divTag;
//	var txtTag;
//	return divTag;
//}

function AjaxDDLResponseHandler()
{
	//debugger
	var divTag = document.getElementById(contentHandler.divTag.id)
	try
	{
		if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete')
		{
			if (xmlHttp.status == 200)
			{
				//debugger
				divTag.innerHTML = '';
				if (xmlHttp.responseText == "")
					ShowHideDiv(false);
				else
				{
					ShowHideDiv(true);
					var responseTxt = xmlHttp.responseXML.lastChild.text;
					var str = responseTxt.split('+');
					for (i = 0; i < str.length; i++)
					{
						var suggest = '<span id="dynaSpan' + i + '" class="normalS" onMouseOver="SuggestOver(this)" onMouseOut="SuggestOut(this)" ';
						suggest += 'onClick="Suggest(this)">' + str[i] + '</span><br />';
						divTag.innerHTML += suggest;
						contentHandler.txtTag.focus();
					}
				}	
			}
			else
				divTag.innerHTML = "An error occurred while retrieving data.";
				ShowHideDiv(true);
		}
	}
	catch(e)
	{
		alert("An error occurred : " + e.toString());
	}	
}

function ShowHideDiv(show)
{
	var tag = contentHandler.divTag;

	// Only Show/Hide if not already Shown/Hidden respectively.
	if (document.layers) // NS
	{
		if (tag.visibility == "show")
		{
			if (show == false)
			{
				tag.visibility = "hide";
		        if(document.getElementById("myFrame")!=null)
				{
		        document.all.myFrame.style.visibility="hidden";
		        }
		        if(document.getElementById("myFlightFrame")!=null)
				{
					document.all.myFlightFrame.style.visibility="hidden";
				}
			}
		}
		else // if tag.visibility == "hide"
		{
			if (show == true)
			{
				tag.visibility = "show";
				if(document.getElementById("myFrame")!=null)
				{
				document.all.myFrame.style.visibility="visible";
				}
				if(document.getElementById("myFlightFrame")!=null)
				{
				document.all.myFlightFrame.style.visibility="visible";
				}
			}
		}
	}
	else // IE
	{
		if (tag.style.visibility == "visible")
		{
			if (show == false)
			{
				tag.style.visibility = "hidden";
				if(document.getElementById("myFrame")!=null)
				{
				document.all.myFrame.style.visibility="hidden";
				}
				if(document.getElementById("myFlightFrame")!=null)
				{
				document.all.myFlightFrame.style.visibility="hidden";
				}
			}
		}
		else // if tag.style.visibility == "hidden"
		{
			if (show == true)
			{
				tag.style.filter = "progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=0.0,wipestyle=1,motion=forward)";
				tag.filters(0).Apply();
				tag.filters(0).Play()
				tag.style.visibility = "visible";
				if(document.getElementById("myFrame")!=null)
				{
				document.all.myFrame.style.visibility="visible";
				}
				if(document.getElementById("myFlightFrame")!=null)
				{
				document.all.myFlightFrame.style.visibility="visible";
				}
			}
		}
	}
}	

function SuggestOver(tag)
{
	tag.className = "highlight";
}

function SuggestOut(tag)
{
	tag.className = "normalS";
}

function Suggest(tag)
{
	//debugger
	if (tag != "undefined")
	{
		var value = tag.innerText;
		var txtTag = contentHandler.txtTag;
		var divTag = contentHandler.divTag;
		txtTag.value = value;
		ShowHideDiv(false);
	}
}

function FocusHandler()
{
	//fromTag, toTag
	//ShowHideDiv(acFlightFrom, false);
}

function KeyHandler(divTag, txtTag)
{
	//debugger
	var evt = this.event;
	if (!evt)
		evt = window.event;

	var keyCode = evt.keyCode;
	var ENTER=13; var UP=38; var DOWN=40; var TAB=9; var SHIFT=16;

   
	contentHandler.divTag = divTag;
	contentHandler.txtTag = txtTag;

	var currValue = contentHandler.txtTag.value;
	switch(keyCode)
	{
		case ENTER:
			return false;
			break;
		case UP:
			return false;
			break;
		case DOWN:
			return false;
			break;
		case TAB:
			if (IsDivHidden() == true)
			{
				if ((currValue.length < 3) && (currValue.length > 0))
					return false;
				else
					return true;
			}
			else
			{
				Suggest(contentHandler.selSpanTag);
				ShowHideDiv(false);
				return true;
			}
			break;
		case SHIFT:
			return false;
			break;
		default:
			return true;
			break;
	}
}

var spanNum = -2;
var spanCount = 0;

function GetSpanItem()
{
	contentHandler.txtTag.value = contentHandler.divTag.childNodes[spanNum].value;
}

function ScrollSpan(direction)
{
	//debugger
	spanCount = contentHandler.divTag.children.length
	if (direction == 'down')
	{
		//debugger
		if (spanNum < spanCount-2)
			spanNum += 2;
		else
			spanNum = 0;
		SetColor(spanNum);
	}	
	else
	{
		//debugger
		if (spanNum == 0)
			spanNum = spanCount - 2;
		else
			spanNum -= 2;
		SetColor(spanNum);
	}	
}

function SetColor(spanNo)
{       
	for (i = 0; i < spanCount-1; i+=2)
	{
		if (contentHandler.divTag.childNodes[i].className == 'highlight')
			contentHandler.divTag.childNodes[i].className = 'normalS';
	}
	contentHandler.divTag.childNodes[spanNo].className = 'highlight';
	contentHandler.selSpanTag = contentHandler.divTag.childNodes[spanNo];
}

function DivKeyHandler()
{
	//debugger
	var evt = this.event;
	if (!evt)
		evt = window.event;

	var keyCode = evt.keyCode;
	var BKSPC=8; var TAB=9; var ALT=18; var UP=38; var DOWN=40;
	var LEFT=37; var RIGHT=39; var ENTER=13; var SHIFT=16; var ESC=27; 

	var currValue = contentHandler.txtTag.value;
	
	//Return value will determine if fresh request to WS is to be sent.
	// False - No request
	// True - Send request (refresh)
	switch(keyCode)
	{
		case BKSPC:	
			return true;
			break;
		case TAB:
			//debugger
			ShowHideDiv(false);
			return false;
			break;
		case UP:
			ScrollSpan("up");
			return false;
			break;
		case DOWN:
			ScrollSpan("down");
			return false;
			break;
		case ENTER:
			Suggest(contentHandler.selSpanTag);
			ShowHideDiv(false);
			return false;
			break;
		case ESC:
			ShowHideDiv(false);
			return false;
			break;
		default:
			return true;
			break;
	}
}

function IsDivHidden()
{
	var divTag = contentHandler.divTag;
	if (document.layers)
	{
		if (divTag.visibility == "show")
			return false;
		else
			return true;
	}
	else
	{
		if (divTag.style.visibility == "visible")
			return false;
		else
			return true;
	}
}
