function printSearchPage(msg)
{	
	searchGid = 0;
	cleanup();
	changeTab("searchTab");	
	document.getElementById("leftColumn").style.visibility = "visible";
	document.getElementById("leftTwoHead").style.visibility = "hidden";
	document.getElementById("rightColumn").style.visibility = "visible";
	document.getElementById("rightTwoHead").style.visibility = "visible";
	document.getElementById("rightThreeHead").style.visibility = "visible";
	
	document.getElementById("leftOneHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_star_bg.gif'/> &nbsp; &nbsp; Most Highest Rated Restaurants";
	document.getElementById("leftOne").innerHTML = "<br/>Loading..."; 
	document.getElementById("rightOneHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_fav_bg.gif'/> &nbsp; &nbsp; Most Favourite Restaurants";
	document.getElementById("rightOne").innerHTML = "<br/>Loading...";
	document.getElementById("rightTwoHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_try_bg.gif'/> &nbsp; &nbsp; Most Wanna Try Restaurants";
	document.getElementById("rightTwo").innerHTML = "<br/>Loading...";
	document.getElementById("rightThreeHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_visited_bg.gif'/> &nbsp; &nbsp; Most Visited Restaurants";
	document.getElementById("rightThree").innerHTML = "<br/>Loading...";
	
	document.getElementById("user").innerHTML = "<table><tr>"+
		"<td style='width:40%; vertical-align: top; padding-left: 20px; padding-right: 20px; padding-top: 10px;'>"+
		"<div style='font-size: 20px; vertical-align: text-bottom; padding-top: 5px;'><img src='"+imageUrl+
		"icon_search.gif'/> Search/Review Restaurants</div><br/><div id='message' class='error'></div>"+
		"<img class='icon' src='"+imageUrl+"icon_food.gif'/> <span style='font-size: 14px; font-weight: bold;'>"+
		"Food</span> <span style='font-size: 10px; color: gray'><i>(e.g. Mexican, Outback Steakhouse)</i></span><br/>"+
		"<input id='food' type='text' value='' size='40' onkeydown='if(event.keyCode==13)searchCheck();'/><br/><br/>"+
		"<img class='icon' src='"+imageUrl+"icon_address.gif'/> <span style='font-size: 14px; font-weight: bold;'>"+
		"Location*</span> <span style='font-size: 10px; color: gray'><i>(e.g. New York or Tokyo, Japan)</i></span><br/>"+
		"<input id='location' type='text' size='40' value='' onkeydown='if(event.keyCode==13)searchCheck();'/><br/><br/>"+
		"<span style='padding-left: 90px;'><input id='searchButton' class='button' type='button' value='Search' "+
		"onClick='searchCheck()'/></span><br/><br/><span style='font-size: 12px;'><b>Note:</b> If you cannot find "+
		"the restaurant you are looking for, <span id='addLink' class='ilink click' onClick='printAddRest()'>Add it"+
		"</span> here.</span></td><td width='60%' style='border: 0px solid black;'><div id='map' class='search_map'>"+
		"Loading Map ...</div></td></tr></table>";
	
	loadMap(0,0, 1);
		
	gadgets.io.makeRequest(requestUrl + "search.php", function(response){processPrintSearch(response,"avgRating", 1, true, document.getElementById("leftOne"), document.getElementById("leftOneHead"), false)},
		{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':"site="+site+"&sort=avgRating&page=1&item=10&needNumber=true&gid=0&uids="+friends_uids+"&uid="+uid,'CONTENT_TYPE':gadgets.io.ContentType.DOM});
			
}	

function loadMap(lat, lon, zoom)
{
	map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(lat,lon),zoom);
	map.addControl(new GSmallMapControl());	
}

function buildMap(lats, lons, rids)
{
	if ( map != null )
		map.clearOverlays();
	bounds = new GLatLngBounds();
	
    for (var i = 0; i < lats.length; i++) 
  	{	
  	 	if ( lats[i].firstChild.data != 0 && lons[i].firstChild.data != 0 )
		{
			var point = new GLatLng(lats[i].firstChild.data, lons[i].firstChild.data);
			bounds.extend(point);
			map.addOverlay(createMarker(point, i+1, rids[i].firstChild.data));
		}
	}
	
	map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds)); 
}

function createMarker(point, index, rid) 
{
	baseIcon.iconSize = new GSize(20, 34);
	var icon = new GIcon(baseIcon);
	icon.image = imageUrl+"marker"+index+".png";
	var marker = new GMarker(point, icon);		
	return marker;
}

function processPrintSearch(response, type, pageNum, load, block, blockHead, isSearch)
{
	var xml = response.data;
	
	if ( load )
	{
		if ( type == "avgRating" )
		{
			if ( isSearch )
				temp = "site="+site+"&uids="+friends_uids+"&uid="+uid+"&page="+pageNum+"&sort=numFav&item=3"+
					"&needNumber=true&gid="+searchGid+"&location="+searchLocation+"&isVillage="+searchIsVillage;
			else
				temp = "site="+site+"&sort=numFav&page="+pageNum+"&item=3&needNumber=true&gid=0&uids="+friends_uids+"&uid="+uid;
				
			gadgets.io.makeRequest(requestUrl + "search.php", 
				function(response)
				{
					processPrintSearch(response, "numFav", pageNum, load, document.getElementById("rightOne"), 
						document.getElementById("rightOneHead"), isSearch)
				},
				{
					'METHOD' : gadgets.io.MethodType.POST, 
					'POST_DATA':temp, 
					'CONTENT_TYPE':gadgets.io.ContentType.DOM
				}
			);

			numResult = xml.getElementsByTagName("number")[0].firstChild.data;
			blockHead.innerHTML += " ("+numResult+")";
			if ( numResult == 0 )
			{
				if ( map != null )
					map.clearOverlays();
				block.innerHTML = "<br/><span class='empty'>There is no restaurant found in this area. <span class='ilink click' onClick='printAddRest()'>Add one here</span>.</span>";
				pageResult = 0;
				return;
			}
			else
				pageResult = Math.ceil(numResult / 10);
		}
		else if ( type == "numFav" )
		{
			if ( isSearch )
				temp = "site="+site+"&uids="+friends_uids+"&uid="+uid+"&page="+pageNum+"&sort=numTry&item=3&needNumber=true&gid="+searchGid+"&location="+searchLocation+"&isVillage="+searchIsVillage;
			else
				temp = "site="+site+"&sort=numTry&page="+pageNum+"&item=3&needNumber=true&gid=0&uids="+friends_uids+"&uid="+uid;

			gadgets.io.makeRequest(requestUrl + "search.php", function(response){processPrintSearch(response, "numTry", pageNum, load, document.getElementById("rightTwo"), document.getElementById("rightTwoHead"), isSearch)},
				{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':temp, 'CONTENT_TYPE':gadgets.io.ContentType.DOM});

			numFav = xml.getElementsByTagName("number")[0].firstChild.data;
			blockHead.innerHTML += " ("+numFav+")";
			if ( numFav == 0 )
			{
				block.innerHTML = "<br/><span class='empty'>No restaurants in this area has been set to favourite.</span>";
				pageFav = 0;
				return;
			}
			else
				pageFav = Math.ceil(numFav / 3);
		}
		else if ( type == "numTry" )
		{
			if ( isSearch )
				temp = "site="+site+"&uids="+friends_uids+"&uid="+uid+"&page="+pageNum+"&sort=numLast&item=3&needNumber=true&gid="+searchGid+"&location="+searchLocation+"&isVillage="+searchIsVillage;
			else
				temp = "site="+site+"&sort=numLast&page="+pageNum+"&item=3&needNumber=true&gid=0&uids="+friends_uids+"&uid="+uid

			gadgets.io.makeRequest(requestUrl + "search.php", function(response){processPrintSearch(response, "numLast", pageNum, load, document.getElementById("rightThree"), document.getElementById("rightThreeHead"), isSearch)},
				{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':temp,'CONTENT_TYPE':gadgets.io.ContentType.DOM});


			numTry = xml.getElementsByTagName("number")[0].firstChild.data;
			temp = pageTry;
			blockHead.innerHTML += " ("+numTry+")";	
			if ( numTry == 0 )
			{			
				block.innerHTML = "<br/><span class='empty'>No restaurants in this area has been set to wanna try.</span>";
				pageTry = 0;
				return;
			}
			else
				pageTry = Math.ceil(numTry / 3);
		}
		else if ( type == "numLast" )
		{
			numVisited = xml.getElementsByTagName("number")[0].firstChild.data;
			temp = pageVisited;
			blockHead.innerHTML += " ("+numVisited+")";
			
			if ( numVisited == 0 )
			{
				block.innerHTML = "<br/><span class='empty'>No restaurants in this area has been set to visited.</span>";
				pageVisited = 0;
				return;
			}
			else
				pageVisited = Math.ceil(numVisited / 3);
		}				
	}
	
	var rids = xml.getElementsByTagName("rid");
	var rnames = xml.getElementsByTagName("name");
	var ratings = xml.getElementsByTagName("rating");
	var tags = xml.getElementsByTagName("tag");
	var addresses = xml.getElementsByTagName("address");
	//var phones = xml.getElementsByTagName("phone");
	var authors = xml.getElementsByTagName("author");
	var ilinks =xml.getElementsByTagName("ilink");
	var reviews = xml.getElementsByTagName("review");
	var numRevs = xml.getElementsByTagName("numRev");
	var numFavs = xml.getElementsByTagName("numFav");
	var numTrys = xml.getElementsByTagName("numTry");
	var numLasts = xml.getElementsByTagName("numLast");
	var string = "";
	var string2 = "";
		
	for (var i = 0; i < rids.length; i++ )
	{
		string += "<tr style='vertical-align:middle;'>";
		
		if ( type == 'avgRating' )
		{
			if ( ilinks[i].firstChild != null )
			{
				var ilink = ilinks[i].firstChild.data;
				if ( ilink.substring(0,1) == 'h'  )
				{
					//dispaly just travature thumb + username
					string += "<td style='width: 20%; text-align: center; font-weight: bold; font-size: 12px; "+
						"vertical-align: middle;'><img width='42' height='42' onerror='this.src=\""+imageUrl+
						"defaultImage_48x48_A.jpg\"' src='"+ilinks[i].firstChild.data+"'/><br/><b>"+
						authors[i].firstChild.data+"</td>";
				}
				else
				{
					//display friend thumb + link profile
					string += "<td class='friend_author' onClick='printProfilePage(\""+authors[i].firstChild.data+"\")'>"+
						"<img width='42' height='42' src='"+uid_thumb[ilink]+"'/><br/>" + uid_name[ilink]+"</td>";
				}
			}
			else
				//restauarnt has no review
				string += "<td class='style='width: 20%; vertical-align: middle;'><img src='"+imageUrl+"noreview.gif'/><br/></td>";
		}
		
		string += "<td style='text-align: left;'>";
				
		if ( type == "avgRating" )
			string += "<span style='font-size:12px; font-weight:bold; vertical-align: text-top;'>"+
				"<img class='icon' src='"+imageUrl+"icon_"+(i+1)+".gif'/></span> ";		
				
		string += "<span class='rname' onClick='printRestaurant("+rids[i].firstChild.data+")'>"
			+ rnames[i].firstChild.data+"</span> &nbsp; <img class='icon' src='"+imageUrl+"rt";
			
		if ( ratings[i].firstChild != null )
			string += ratings[i].firstChild.data;
		else
			string += '0';	
			
		string += ".gif'/><br/><span class='rdetails'><img class='icon' src='"+imageUrl+"icon_address.gif'/> "+
			addresses[i].firstChild.data;
			
		//if ( phones[i].firstChild != null )
		//	string += "<br/><img class='icon' src='"+imageUrl+"icon_phone.gif'/> " + phones[i].firstChild.data;
			
		if ( tags[i].firstChild != null )
			string += "<br/><img class='icon' src='"+imageUrl+"icon_tag.gif'/> " + tags[i].firstChild.data;
			
		string += "</span><br/><span class='smaller'><img class='icon' src='"+imageUrl+"icon_star.gif'/> "+
			numRevs[i].firstChild.data+" &nbsp; <img class='icon' src='"+imageUrl+"icon_fav.gif'/> "+ 
			numFavs[i].firstChild.data+" &nbsp; <img class='icon' src='"+imageUrl+"icon_try.gif'/> "+
			numTrys[i].firstChild.data+" &nbsp; <img class='icon' src='"+imageUrl+"icon_visited.gif'/> "+
			numLasts[i].firstChild.data+"</span><br/>";
		
		if ( type == "avgRating" )
		{		
			if ( reviews[i].firstChild != null )
				string += "<span class='review'><img class='icon' src='"+imageUrl+
				"icon_review.gif'/> "+reviews[i].firstChild.data+" <span class='rmore' onClick='printRestaurant("+
					rids[i].firstChild.data+")'>read more</span>";
			else
				string += "<span class='review'><img class='icon' src='"+imageUrl+
				"icon_review.gif'/> <span class='empty smaller'>This restaurant has no review yet. Click <span class='rmore' "+
					"onClick='printRestaurant("+rids[i].firstChild.data+")'>here</span> to be the first to review it.</span>";	
		}			
		string += "</span></td></tr>";	      
	}

	string2 = "<tr><td ";
	if ( type == 'avgRating' )
		string2 += " colspan='2' ";
	string2 += " style='font-weight: bold; font-size: 12px;"+
		"text-align: right; width: 100%; vertical-align: text-top;'>";
	
	//if not first page, then print previous
	if ( pageNum != 1 )
		string2 +=	"<span class='click' onClick='pageSearchResult(\""+type+"\","+(pageNum-1)+")'>"+
			"<img class='icon' src='"+imageUrl+"icon_prev.gif'/></span>";				
	
	string2 += " page " + pageNum + " ";
	
	if ( type == "avgRating" )
	{
		temp = pageResult;
		buildMap(xml.getElementsByTagName("lat"), xml.getElementsByTagName("lon"), rids);
	}
	else if ( type == "numTry" )
		temp = pageTry;
	else if ( type == "numFav" )
		temp = pageFav;
	else if ( type == "numLast" )
		temp = pageVisited; 
	
	//if not last page, then print next
	if ( pageNum != temp )
		string2 +=	"<span class='click' onClick='pageSearchResult(\""+type+"\","+(pageNum+1)+")'>"+
			"<img class='icon' src='"+imageUrl+"icon_next.gif'/></span>";
	
	string2 += "</td></tr>";

	if ( type == "avgRating" )
		block.innerHTML = "<table width='100%' cellspacing='5'>"+ string2 + string + string2 + "</table>";
	else
	{
		block.innerHTML = "<table width='100%' cellspacing='5'>"+ string2 + string + "</table>";
		
		//if ( type == "numLast" )
		//	gadgets.window.adjustHeight();
	}
}

function searchCheck()
{                       
	if ( !hasApp )
	{
		document.getElementById("message").innerHTML = "You must have this appplication installed in order to search for restaurants. Click <a href='"+installUrl+"'>here</a> to install.<br/>";
		return;
	}

	document.getElementById("searchButton").value = 'Searching...';
	searchLocation = document.getElementById("location").value;
	searchFood = document.getElementById("food").value;
	var ucity = searchLocation.toUpperCase();

	//both empty
	if (searchLocation == "" && searchFood == "") 
	{
		document.getElementById("searchButton").value = "Search";
		document.getElementById("message").innerHTML = "Please enter something to search for.";
	}
	//food only
	else if ( searchLocation == "" )
	{
		document.getElementById("searchButton").value = "Search";
		document.getElementById("message").innerHTML = "Please enter a city to search for.";
	}	
	else if ( searchFood == "" && ucity.indexOf("EARTH") == 0)
	{
		document.getElementById("searchButton").value = "Search";
		document.getElementById("message").innerHTML = "Please enter something to search for.<br/>";
	}	
	//location or location + food 
	else 
	{
		searchLocation = searchLocation.replace(/ /g, "%20")
		searchLocation= searchLocation.replace(/,/g,"%2C");
		searchFood = searchFood.replace(/ /g, "%20");
		gadgets.io.makeRequest(requestUrl + "inputcheck.php", processSearchCheck,
			{'METHOD' : gadgets.io.MethodType.POST,'POST_DATA': "city="+searchLocation, 'CONTENT_TYPE':gadgets.io.ContentType.TEXT});
	}
}

function processSearchCheck(response)
{
	//only 1 result so it's good
	if ( isDigit(response.text.substring(0,1)) )
	{
		searchGid = response.text;
		searchIsVillage = "false";
		searchSubmit();
	}
	else if ( response.text.substring(0,1) == "-" )
	{
		searchGid = response.text.substring(1);
		searchIsVillage = "true";
		searchSubmit();
	}
	else //return multiple so let user choose
	{
		document.getElementById("message").innerHTML = response.text;
		document.getElementById("searchButton").value = "Search";
	}
}

function setLocation(gid, city)
{
	document.getElementById("message").innerHTML = "";
	document.getElementById("location").value = city;
	searchLocation = city;
	searchLocation = searchLocation.replace(/ /g, "%20")
	searchLocation= searchLocation.replace(/,/g,"%2C");
	searchGid = gid;
	searchIsVillage = "false";
	searchFood = searchFood.replace(/ /g, "%20");
	searchSubmit();
}

function searchSubmit()
{
	if ( searchLocation != "" )
	{
		temp = searchLocation.replace(/%20/g,' ');
		temp = temp.replace(/%2C/g,',');
		temp = capWords(temp);
		temp = " in " + temp;
	}

	document.getElementById("searchButton").value = "Search";
	document.getElementById("leftOneHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_search_bg.gif'/> &nbsp; &nbsp; Search Result"+temp;
	document.getElementById("rightOneHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_fav_bg.gif'/> &nbsp; &nbsp; Most Favourite Restaurants"+temp;
	document.getElementById("rightTwoHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_try_bg.gif'/> &nbsp; &nbsp; Most Wanna Try Restaurants"+temp;
	document.getElementById("rightThreeHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_visited_bg.gif'/> &nbsp; &nbsp; Most Visited Restaurants"+temp;
	
	temp = "site="+site+"&uids="+friends_uids+"&uid="+uid+"&page=1&sort=avgRating&item=10&needNumber=true&page=1&food="+searchFood+"&location="+searchLocation+"&gid="+searchGid+"&isVillage="+searchIsVillage;
	gadgets.io.makeRequest(requestUrl + "search.php", function(response){processPrintSearch(response, "avgRating", 1, true, document.getElementById("leftOne"), document.getElementById("leftOneHead"), true)},
		{'METHOD' : gadgets.io.MethodType.POST,'POST_DATA': temp, 'CONTENT_TYPE':gadgets.io.ContentType.DOM});			
}

function capWords(str)
{ 
	var words = str.split(" ");
    var testwd;
   	var firLet;
   	var rest;
    
   	for (var i=0 ; i < words.length ; i++)
   	{ 
     	testwd = words[i]; 
      	firLet = testwd.substr(0,1); 
      	rest = testwd.substr(1, testwd.length -1) 
		words[i] = firLet.toUpperCase() + rest 
   	} 
   	return words.join(" "); 
} 

function pageSearchResult(type, pageNum)
{   
	var block;
	var blockHead;
	var item;
	
	temp = "";
	if ( type == "avgRating" )
	{
		block = document.getElementById("leftOne");
		blockHead = document.getElementById("leftOneHead");
		item = 10;
		temp = "food="+searchFood+"&";
	}
	else if ( type == "numFav" )
	{
		block = document.getElementById("rightOne");
		blockHead = document.getElementById("rightOneHead");
		item = 3;
	}
	else if ( type == "numTry" )
	{
		block = document.getElementById("rightTwo");
		blockHead = document.getElementById("rightTwoHead");
		item = 3;
	}
	else if ( type == "numLast" )
	{
		block = document.getElementById("rightThree");
		blockHead = document.getElementById("rightOneThree");
		item = 3;
	}

	temp += "site="+site+"&needNumber=false&page="+pageNum+"&sort="+type+"&item="+item+"&gid="+searchGid+"&location="+searchLocation+"&isVillage="+searchIsVillage;    
	
	
	gadgets.io.makeRequest(requestUrl+"search.php", function(response){processPrintSearch(response, type, pageNum, false, block, blockHead, true);},
		{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':temp, 'CONTENT_TYPE':gadgets.io.ContentType.DOM});
}