
	/**
	 *
	 *	LondonTown.com Beta Search w/ Ajax
	 *	Copyright (C) 2005, All Rights Reserved
	 *
	 *	Core JS ajax/logic for the search pages
	 *
	 */

	var currentupdate = 0;
	var lastupdate = 0;
	var oldkey = '';
	var c = 0;
	var kddd = "";
	var keywords = "";
	var editorialPoint = 1;
	var directoryPoint = 1;


	/**
	 * @meth getRequest
	 * @desc Obtains a XML HTTP Request
	 * @return array
	 */
	function getRequest() {
		var con = new Array();
		var _ms_XMLHttpRequest_ActiveX = "";
		var req;
		if (window.XMLHttpRequest) {
			req = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			if (_ms_XMLHttpRequest_ActiveX) {
				req = new ActiveXObject(_ms_XMLHttpRequest_ActiveX);
			} else {
				var versions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
				for (var i = 0; i < versions.length ; i++) {
					try {
						req = new ActiveXObject(versions[i]);
						if (req) {
							_ms_XMLHttpRequest_ActiveX = versions[i];
							break;
						}
					} catch (objException) {
								// trap; try next one
					}
				}
			}
		}
		con[0]=req;
		con[1]=_ms_XMLHttpRequest_ActiveX;
		return con;
	}





	/**
	 * @meth runProcess
	 * @desc Process the search again
	 * @param key
	 */
	function runProcess(key){
		if (key != "")
		{
			innerOldKey = key;
			var searchlayer = document.getElementById("searchLayer");
			searchlayer.style.display = '';
			editorialPoint = 1;
			directoryPoint = 1;
			keywords = key;
			loadEditorial("/ajax/James/Objects/Search.class.php?key="+key+"&start=0&limiter=7&catdown=EDIT");
			loadDirectory("/ajax/James/Objects/Search.class.php?key="+key+"&start=0&limiter=10&catdown=MAG|EVENT|HOTEL|BANDB|STREET");
		}
	}


	/**
	 *
	 */
	function loadDirectory(url) {
		try {
			if ( _ms_XMLHttpRequest_ActiveX ) {
				requestDirectory.onreadystatechange = processDirectory;
				requestDirectory.open("GET", url, true);
				requestDirectory.send(null);
			} else {
				if (requestDirectory) {
					requestDirectory.onreadystatechange = processDirectory;
					requestDirectory.open("GET", url, true);
					requestDirectory.send(null);
				}
			}
		} catch ( directoryException ) {}
	}

	/**
	 *
	 */
	function loadEditorial(url) {
		try {
			if ( _ms_XMLHttpRequest_ActiveX1 ) {
				requestEditorial.onreadystatechange = processEditorial;
				requestEditorial.open("GET", url, true);
				requestEditorial.send(null);
			} else {
				if (requestEditorial) {
					requestEditorial.onreadystatechange = processEditorial;
					requestEditorial.open("GET", url, true);
					requestEditorial.send(null);
				}
			}
		} catch ( editorialException ) {}
	}

	function loadFolks(url) {
		try {
			if ( _ms_XMLHttpRequest_ActiveX2 ) {
				requestFolks.onreadystatechange = processFolks;
				requestFolks.open("GET", url, true);
				requestFolks.send(null);
			} else {
				if (requestFolks) {
					requestFolks.onreadystatechange = processFolks;
					requestFolks.open("GET", url, true);
					requestFolks.send(null);
				}
			}
		} catch ( loadFolksException ) {}
	}

	/**
	 *
	 */
	function loadEditorialPage( limit ) {

		editorialPoint = (limit/10)+1;
		loadEditorial("/ajax/James/Objects/Search.class.php?key="+keywords+"&start="+limit+"&limiter=7&catdown=EDIT");
	}


	/**
	 *
	 */
	function loadDirectoryPage( limit ) {

		directoryPoint = (limit/10)+1;
		loadDirectory("/ajax/James/Objects/Search.class.php?key="+keywords+"&start="+limit+"&limiter=10&catdown=MAG|EVENT|HOTEL|BANDB|STREET");
	}


	/**
	 *
	 */
	function processEditorialPageIndexers(counter){
		var editpages = document.getElementById("editpages");
		var editpages1 = document.getElementById("editpages1");
		editpages.innerHTML="";
		editpages1.innerHTML="";
		var pages = Math.ceil((parseInt(counter) / 10));
		var startpoint = 1;
				var endpoint = 10;
				if ( pages > 10 ) {
					if ( editorialPoint > 5 ) {
						startpoint = editorialPoint - 4;
						endpoint = editorialPoint + 5;
					//	alert("1");
					}
					if ( (editorialPoint + 5 ) > pages ) {
						endpoint = pages;
						startpoint = pages -10;
					//	alert("2");
					}


				} else {
				///	alert("3");
					endpoint = (pages > 10) ? 10: pages;
				}


		for ( var i=startpoint;i<=endpoint;i++){
			if ( editorialPoint == i ) {
				editpages.innerHTML += "<span class=\"pageLinkSelected\">"+i+"</span>&nbsp;";
			} else {
				editpages.innerHTML += "<a class=\"pageLink\" href=\"javascript:loadEditorialPage("+((i-1)*10)+");\">"+i+"</a>&nbsp;";
			}
		}
		editpages1.innerHTML=editpages.innerHTML;
	}


	/**
	 *
	 */
	function processDirectoryPageIndexers(counter){
		var dirpages = document.getElementById("dirpages");
		var dirpages1 = document.getElementById("dirpages1");
		dirpages.innerHTML="";dirpages1.innerHTML="";
		var pages = Math.ceil((parseInt(counter) / 10));

		var startpoint = 1;
		var endpoint = 10;
		if ( pages > 10 ) {
			if ( directoryPoint > 5 ) {
				startpoint = directoryPoint - 4;
				endpoint = directoryPoint + 5;
			//	alert("1");
			}
			if ( (directoryPoint + 5 ) > pages ) {
				endpoint = pages;
				startpoint = pages -10;
			//	alert("2");
			}


		} else {
		///	alert("3");
			endpoint = (pages > 10) ? 10: pages;
		}

		//alert("Start: " + startpoint + "-- END: " + endpoint);

		for ( var i=startpoint;i<=endpoint;i++){
			if ( directoryPoint == i ) {
				dirpages.innerHTML += "<span class=\"pageLinkSelected\">"+i+"</span>&nbsp;";
			} else {
				dirpages.innerHTML += "<a class=\"pageLink\" href=\"javascript:loadDirectoryPage("+((i-1)*10)+");\">"+i+"</a>&nbsp;";
			}
		}
		dirpages1.innerHTML=dirpages.innerHTML;
	}

	function processFolks( folks, folkscount ) {

		//
		//	0-20 small
		//  20-40 - small bold
		//  40-60 - medium unbold
		//	60-80 - big unbold
		//  80-100 - bug bold

		var folksObjects = document.getElementById("folks");


		var counter = parseInt(folkscount[0].getAttributeNode("count").nodeValue);




		for ( var i = 0; i < folks.length; i++ ) {

			var c="";

			var name = folks[i].getAttributeNode("name").nodeValue;
			var count = folks[i].getAttributeNode("counter").nodeValue;

			var percent = (count/counter)*100;

			if ( percent > 1 && percent < 2 ) {
				c="smallbold";
			}
			if ( percent > 2 && percent < 3 ) {
				c="mediumbold";
			}
			if ( percent > 4 && percent <= 5 ) {
				c="largeunbold"
			}
			if ( percent > 6  ) {
				c="largebold";
			}



			folksObjects.innerHTML += "<a href=\"XX\" class=\""+c+"\">"+name+"("+percent+"%)</a>&nbsp;";




		}



	}

	var editorialCount = 0;
	var directoryCount = 0;

	/**
	 * @meth processCounters
	 * @desc proces the counters from the ajax calls
	 * @param counters
	 */
	function processCounters( counters ) {
		var directoryResults = document.getElementById("directoryResults");
		var editorialResults = document.getElementById("editorialResults");//searchtotal
		var searchtotal = document.getElementById("searchtotal");//searchtotal
		var searchfor = document.getElementById("searchfor");//searchtotal
		var keyEntry = document.getElementById("keyEntry");//searchtotal
		var directory = 0;
		var editorial = 0;
		var total = 0;

		total = directoryCount+editorialCount;




		searchfor.innerHTML = keywords;
		searchtotal.innerHTML = total;
		keyEntry.value = keywords;

			directoryResults.innerHTML = directoryCount;
			processDirectoryPageIndexers(directoryCount);

			editorialResults.innerHTML = editorialCount;
			processEditorialPageIndexers(editorialCount);

	}



	function getDirectoryCount(counters){
		var directory =0;
		for ( var i = 0 ; i < counters.length; i++ ) {
			var count = counters[i].getAttributeNode("count").nodeValue;
			var type = counters[i].getAttributeNode("type").nodeValue;
			if ( type != "EDIT" && type != "TOTAL" ) {

				directory = directory+  parseInt(count);

			}

		}
		return directory;
	}

	function getEditorialCount(counters){
		var editorial =0;
		for ( var i = 0 ; i < counters.length; i++ ) {
			var count = counters[i].getAttributeNode("count").nodeValue;
			var type = counters[i].getAttributeNode("type").nodeValue;
			if ( type == "EDIT" ) {
				editorial =  parseInt(count);
			}

		}
		return editorial;
	}


	function redoSearch() {
		if ( requestEditorial.status != 200 ) {
			alert("Rerunning search");
			runProcess(innerOldKey);
		}
	}

	/**
	 * @meth processEditorial
	 * @desc Process the editorial xml after the ajax call
	 **/
	function processEditorial() {
		try {
			if (requestEditorial.readyState == 4) {
				if (requestEditorial.status == 200) {
					response = requestEditorial.responseXML.documentElement;
					if ( response ) {

						var directoryObject = document.getElementById("editorial");
						directoryObject.innerHTML = "";
						var counters = response.getElementsByTagName("typecounter");
						editorialCount=getEditorialCount(counters);

						processCounters(counters);
						var content = "";
						var items = response.getElementsByTagName("i");

						//var folks = response.getElementsByTagName("folks");
						//var folkscount = response.getElementsByTagName("folkscount");
						//processFolks(folks,folkscount);

						for ( var i = 0 ; i < items.length; i++ )
						{
							var dataurl = ""+items[i].getAttributeNode("url").nodeValue;
							var dataname = items[i].getAttributeNode("name").nodeValue;
							//dataname = htmldecode(dataname);
							var add = "";
							var purename = dataname;
							if ( dataname.length > 20 ) {
								var add = "...";
							}
							dataname=dataname.substring(0,30)+add;

							var imag = items[i].getAttributeNode("image").nodeValue;
							var subType = items[i].getAttributeNode("subType").nodeValue;

							var datadesc = " ";
							if ( items[i].firstChild  ) {

								datadesc=		items[i].firstChild.nodeValue;
								//datadesc = htmldecode(datadesc);
								//reg = new RegExp(""+keywords+"","ig");
								//datadesc = datadesc.replace(reg,"<span style='cursor:hand;z-index:50000' onClick='runProcess(\""+keywords+"\");' class=\"bgc\">"+keywords+"</span>");
								var segments = keywords.split(" ");
								for ( var k=0;k<segments.length;k++){
									//alert("Replacing " + segments[k]);
									reg = new RegExp(""+segments[k]+"","ig");
									datadesc = datadesc.replace(reg,"<span class=\"bgc\">"+segments[k]+"</span>");
								}
							}
							//directoryObject.innerHTML += "<span class=\"searchResultCount\"><strong>"+dataname+"</strong></span><br/><span class=\"searchResultCount\">"+datadesc+"</span><br>";


							directoryObject.innerHTML += '<table width="100%"  border="0" cellspacing="0" cellpadding="0"><tr><td width="8%" class="defaultDirectoryNumber">'+(i+1)+'.</td><td width="8%"><img src="images/editorialIcon.jpg" width="10" height="14"></td><td width="84%"><a href="Pointer.php?'+dataurl+'---EDIT" alt="'+purename+'" class="defaultDirectoryTitle">'+dataname+'</a></td></tr><tr><td>&nbsp;</td><td colspan="2" class="defaultDirectoryContent">'+datadesc+'</td></tr><tr><td><img src="images/trans.gif" height="10" width="5"/></td></tr></table>';

						}

						var searchlayer = document.getElementById("searchLayer");
						searchlayer.style.display = 'none';

					}
				} else {
					alert("There was a problem retrieving the XML data:\n" + req.statusText);
				}
			}
		} catch ( jsException ) {}
	}

	/**
	 * @meth flip
	 * @desc Flips the image and the layer for the items
	 * @param url
	 */
	function flip(url){
		var obj = document.getElementById(url);
		var n = "img"+url;
		var imgobj = document.getElementById(n);
		obj.style.display = (obj.style.display=="none") ? "":"none";
		imgobj.src = (imgobj.src.match(/images\/MAG_expand.gif/)) ? 'images/MAG_unexpand.gif' : 'images/MAG_expand.gif';
	}

	/**
	 * @meth processDirectory
	 * @desc Process the directory xml after the ajax call
	 **/
	function processDirectory() {
		if (requestDirectory.readyState == 4) {
			if (requestDirectory.status == 200) {
				response = requestDirectory.responseXML.documentElement;
				if ( response ) {
					var editorialObject = document.getElementById("directory");
					editorialObject.innerHTML = "";
					var content = "";
					var items = response.getElementsByTagName("i");
					var counters = response.getElementsByTagName("typecounter");
					directoryCount=getDirectoryCount(counters);
					processCounters(counters);
					for ( var i = 0 ; i < items.length; i++ )
					{
						var dataurl = ""+items[i].getAttributeNode("url").nodeValue;
						var dataname = ""+items[i].getAttributeNode("name").nodeValue;

						dataname = dataname.replace("&amp;","&");

						//dataname = htmldecode(dataname);

						//alert(dataname);
						var add = "";
						if ( dataname.length > 26 ) {
							add = "...";
						}
						dataname = dataname.substring(0,26);
						dataname += add;
						var imag = items[i].getAttributeNode("image").nodeValue;
						var subType = items[i].getAttributeNode("subType").nodeValue;
						var index = items[i].getAttributeNode("index").nodeValue;
						var realIndex = index;
						var address = items[i].getAttributeNode("address").nodeValue;
						var walk = "";

						try {
							walk= items[i].getAttributeNode("walk").nodeValue;
							if ( walk == "undefined") {
								walk = "";
							}
						} catch ( Exception ){}
						var datadesc = " ";
						if ( items[i].firstChild  ) {
							datadesc=		items[i].firstChild.nodeValue;
							//datadesc = htmldecode(datadesc);
						}

						var type = "";
						var uri="#";

						if ( index == "STREET" ) { uri="http://www.londontown.com/LondonStreets"; mode="Streets"; subType = ""; type = "Street"; }
						if ( index == "EVENT" ) { uri="http://www.londontown.com/LondonEvent.php/events.php"; mode="Events"; subType = ""; type = "Event"; }
						if ( index == "HOTEL" || index == "BANDB" ) { 
							uri="http://www.londontown.com/directory-accommodation/index-hotels.php"; 
							mode="Hotels";  
							subType = ""; 
							type = "Hotels"; 
							index = "HOTEL";
						}
						if ( index == "MAG" ) {

							uri = "http://www.londontown.com/directory/";

							mode="Directory"; type = subType.replace(/_/g, " ");

							if ( datadesc == "" ) {

								datadesc = "No description available for this";
							}




						}

						if ( address == ""  ) { address=type; }
						var g="";
						if ( walk ) {
							g = "<BR>"+walk;
						}

						var edit = items[i].getAttributeNode("edit").nodeValue;
						if ( edit == "1" ) {
							//alert("Edit is set");
							editorialObject.innerHTML += '<table width="214" border="0" cellspacing="0" cellpadding="0"><tr><td><img src="images/'+index+subType+'_upper.jpg" width="214" height="4"></td></tr><tr><td class="'+index+subType+'Border '+index+subType+'Mainbg boxing"><table width="100%"  border="0" cellspacing="0" cellpadding="0"><tr><td width="9%" class="defaultDirectoryNumber lowerBorder">'+(i+1)+'.</td><td width="" class="lowerBorder"><a class="defaultDirectoryTitle" href="Pointer.php?'+dataurl+'---'+realIndex+'">'+dataname+'</a></td><td width="" rowspan="3" valign="top" class="lowerBorder"><img alt="LondonTown.com Editors Choice Selection" src="/restaurants/images/en/global/test.gif"></td></tr><tr><td>&nbsp;</td><td class="defaultDirectoryContent">'+address+''+g+'</td></tr><tr id="'+dataurl+'"  style="position:relative; display:none"><td>&nbsp;</td><td class="defaultDirectoryContent">'+datadesc+'</td></tr></table></td></tr><tr><td class="'+index+subType+'Darkbg '+index+subType+'Border boxingblurg"><table width="100%"  border="0" cellspacing="0" cellpadding="0"><tr  ><td class="top3pixpadd" width="9%"><img src="images/'+index+'_icon.jpg" width="14" height="14"></td><td class="top3pixpadd" width="83%"><a href="'+uri+'" class="'+index+subType+'Font">London '+type+'</a></td><td class="top3pixpadd" width="8%"><div align="right"><a href="javascript:flip(\''+dataurl+'\');"><img id="img'+dataurl+'" src="images/MAG_expand.gif" width="10" height="10" border="0"></a></div></td></tr></table></td></tr><tr><td><img src="images/'+index+subType+'_lower.jpg" width="214" height="4" border="0"></td></tr></table><br/>';
						} else {
							//alert("Edit is NOT set");
							editorialObject.innerHTML += '<table width="214" border="0" cellspacing="0" cellpadding="0"><tr><td><img src="images/'+index+subType+'_upper.jpg" width="214" height="4"></td></tr><tr><td class="'+index+subType+'Border '+index+subType+'Mainbg boxing"><table width="100%"  border="0" cellspacing="0" cellpadding="0"><tr><td width="9%" class="defaultDirectoryNumber lowerBorder">'+(i+1)+'.</td><td width="91%" class="lowerBorder"><a class="defaultDirectoryTitle" href="Pointer.php?'+dataurl+'---'+realIndex+'">'+dataname+'</a></td></tr><tr><td>&nbsp;</td><td class="defaultDirectoryContent">'+address+''+g+'</td></tr><tr id="'+dataurl+'"  style="position:relative; display:none"><td>&nbsp;</td><td class="defaultDirectoryContent">'+datadesc+'</td></tr></table></td></tr><tr><td class="'+index+subType+'Darkbg '+index+subType+'Border boxingblurg"><table width="100%"  border="0" cellspacing="0" cellpadding="0"><tr  ><td class="top3pixpadd" width="9%"><img src="images/'+index+'_icon.jpg" width="14" height="14"></td><td class="top3pixpadd" width="83%"><a href="'+uri+'" class="'+index+subType+'Font">London '+type+'</a></td><td class="top3pixpadd" width="8%"><div align="right"><a href="javascript:flip(\''+dataurl+'\');"><img id="img'+dataurl+'" src="images/MAG_expand.gif" width="10" height="10" border="0"></a></div></td></tr></table></td></tr><tr><td><img src="images/'+index+subType+'_lower.jpg" width="214" height="4" border="0"></td></tr></table><br/>';
						}



					}
					var searchlayer = document.getElementById("searchLayer");
					searchlayer.style.display = 'none';
				}
			} else {
				alert("There was a problem retrieving the XML data:\n" + req.statusText);
			}
		}
	}

	function processFolks(){
		if (requestFolks.readyState == 4) {
					if (requestFolks.status == 200) {
						response = requestFolks.responseXML.documentElement;
				if ( response ) {

					var folksObject = document.getElementById("folks");

					folksObject.innerHTML = "";



					var items = response.getElementsByTagName("key");

					//alert(items.length);

					for ( var i = 0; i < items.length; i++ ) {
						var cla = items[i].getAttributeNode("class").nodeValue;
						var name = items[i].firstChild.nodeValue;
						if ( !cla){cla="smallunbold"; }

						folksObject.innerHTML += "<a class=\""+cla+"\" href=\"index-test.php?key="+name+"\">"+name+"</a>&nbsp;";

					}

					//alert("INNER"+folks.innerHTML);



				}
			}
		}

	}



	var innerOldMilli = getMilliSeconds();
	var innerNewMilli = 0;

	function autoInnerUpdate() { innerOldMilli = getMilliSeconds(); }


	var innerOldKey = "";

	function innerSearch() {
		innerNewMilli = getMilliSeconds();
		var obj = document.getElementById('keyEntry');
	//	var t = document.getElementById('test');
		//t.innerHTML = "IN "+(innerNewMilli-innerOldMilli);
		var val = obj.value;
		if ( ((innerNewMilli-innerOldMilli)>1600) && val != innerOldKey) {
		//	t.innerHTML = "SEARCHING...";
			runProcess(val);
			innerOldKey = val;
		}

	}

	function innerWait(){
		innerSearch();
		setTimeout("innerWait()",200);
	}





	function runFolks(t){


		//alert("folks.php?target="+t.options[t.selectedIndex].value);

		loadFolks("folks.php?target="+t.options[t.selectedIndex].value);

		//alert("folks.php?target="+t.options[t.selectedIndex].value);
	}



		var httpArc 						= getRequest();
		var requestDirectory 				= httpArc[0];
		var _ms_XMLHttpRequest_ActiveX 		= httpArc[1];

		var httpArc1 						= getRequest();
		var requestEditorial				= httpArc1[0];
		var _ms_XMLHttpRequest_ActiveX1 	= httpArc1[1];


		var httpArc2 						= getRequest();
		var requestFolks				= httpArc2[0];
		var _ms_XMLHttpRequest_ActiveX2 	= httpArc2[1];

