var rest_id;
var rest_name;
var rest_address;
var rest_fav;
var rest_try;
var rest_last;

function printRestaurant(rid)
{
	rest_id = rid;
	reviewed = false;
	visited = false;
	myreview = "";
	myrating = 0;
	mydate = "";
	
	changeTab('searchTab');
	cleanup();
	
	document.getElementById("leftColumn").style.visibility = "visible";
	document.getElementById("leftTwoHead").style.visibility = "visible";
	document.getElementById("rightColumn").style.visibility = "visible";
	document.getElementById("rightTwoHead").style.visibility = "visible";
	document.getElementById("rightThreeHead").style.visibility = "hidden";

	document.getElementById("leftOneHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_freviews.gif'/> &nbsp; &nbsp; Friends' Reviews";
	document.getElementById("leftOne").innerHTML = "<br/>Loading...";
	document.getElementById("leftTwoHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_treviews_bg.gif'/> &nbsp; &nbsp; Travature's Reviews";
	document.getElementById("leftTwo").innerHTML = "<br/>Loading...";
	document.getElementById("rightOneHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_direction.gif'/> &nbsp; &nbsp; My Direction";
	document.getElementById("rightOne").innerHTML = "<br/>Loading...";
	document.getElementById("rightTwoHead").innerHTML = "<img class='icon' src='"+imageUrl+"icon_review_bg.gif'/> &nbsp; &nbsp; My Review";
	document.getElementById("rightTwo").innerHTML = "<br/>Loading...";
	
	gadgets.io.makeRequest(requestUrl+"getrestinfo.php", processRestInfo,
		{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':"rid="+rest_id, 'CONTENT_TYPE':gadgets.io.ContentType.DOM});			
}

function processRestInfo(response)
{
	gadgets.io.makeRequest(requestUrl+"getfriendsreviews.php", processFriendsReviews,
		{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':"site="+site+"&rid="+rest_id+"&uids="+friends_uids, 'CONTENT_TYPE':gadgets.io.ContentType.DOM});
	
	var xml = response.data;
	rest_name = xml.getElementsByTagName("name")[0].firstChild.data;
	rest_address = xml.getElementsByTagName("address")[0].firstChild.data;
	var phone = xml.getElementsByTagName("phone")[0].firstChild;
	var website = xml.getElementsByTagName("website")[0].firstChild;
	var tags = xml.getElementsByTagName("tags")[0].firstChild;
	var price = xml.getElementsByTagName("price")[0].firstChild;
	var hours = xml.getElementsByTagName("hours")[0].firstChild;
	var attire = xml.getElementsByTagName("attire")[0].firstChild;
	var reservation = xml.getElementsByTagName("reservation")[0].firstChild;
	var takeout = xml.getElementsByTagName("takeout")[0].firstChild;
	var delivery = xml.getElementsByTagName("delivery")[0].firstChild;
	var family = xml.getElementsByTagName("family")[0].firstChild;
	var groups = xml.getElementsByTagName("groups")[0].firstChild;
	var creditCard = xml.getElementsByTagName("creditCard")[0].firstChild;
	var lat = xml.getElementsByTagName("lat")[0].firstChild;
	var lon = xml.getElementsByTagName("lon")[0].firstChild;
	var avgRating = xml.getElementsByTagName("avgRating")[0].firstChild.data;
	rest_fav = xml.getElementsByTagName("numFav")[0].firstChild.data;
	rest_try = xml.getElementsByTagName("numTry")[0].firstChild.data;
	rest_last = xml.getElementsByTagName("numLast")[0].firstChild.data;
	
	var block = document.getElementById("user"); 
	var string = "";
	
	string += 
"<table>"+
	"<tr>"+
		"<td style='border: 0px solid black; width:60%; vertical-align: top; padding-left: 20px; padding-right: 20px; padding-top: 10px;'>"+
			"<div>"+
				"<span style='font-size: 18px; font-weight: bold;'>"+ rest_name + "</span> &nbsp; <img class='icon' src='"+imageUrl+"rt"+avgRating+".gif'/><br/><br/>"+
				"<span style='font-size: 14px; line-height: 20px;'><img class='icon' src='"+imageUrl+"icon_address.gif'/> " + rest_address + "<br/>";
	if ( phone != null )
		string  += "<img class='icon' src='"+imageUrl+"icon_phone.gif'/> " + phone.data + "<br/>";
	if ( website != null )	
	{
		website = unescape(website.data);
		temp = website.substr(0,40);
		if ( website.length > 40 )
			temp += "...";
		string += "<img class='icon' src='"+imageUrl+"icon_website.gif'/> <a href='"+website+"' style='color: #314973; font-weight:bold; text-decoration: none;'>" + temp + "</a><br/>";
	}
	if ( tags != null )
		string += "<img class='icon' src='"+imageUrl+"icon_tag.gif'/> " + tags.data + "<br/>";
	if ( hours != null )	
		string += "<img class='icon' src='"+imageUrl+"icon_hours.gif'/> " + hours.data + "<br/>";
	string += "<img class='icon' src='"+imageUrl+"icon_fav.gif'/> " + rest_fav +
		" &nbsp; &nbsp; <img class='icon' src='"+imageUrl+"icon_try.gif'/> " + rest_try +
		" &nbsp; &nbsp; <img class='icon' src='"+imageUrl+"icon_visited.gif'/> " + rest_last; 
	
	string += "</span><br/><br/><table style='font-size: 12px; cell-spacing: 3px;'><tr><td><b>Price Range:</b> ";	
	if ( price == null || price.data == "0")
		string += "<i style='color: gray'>no data</i>";
	else
		string += getPriceRange(price.data);
	
	string += "</td><td style='padding-left: 20px;'><b>Takeout:</b> ";	
	if ( takeout == null )	
		string += "<i style='color: gray'>no data</i>";
	else	
		string += yesOrNo(takeout.data);
	
	string += "</td></tr><tr><td><b>Dress Attire:</b> "	
	if ( attire == null  || attire.data == "0" )	
		string += "<i style='color: gray'>no data</i>";
	else
		string += getDressAttire(attire.data) ;
	
	string += "</td><td style='padding-left: 20px;'><b>Delivery:</b> ";
	if ( delivery == null )	
		string += "<i style='color: gray'>no data</i>";
	else
		string += yesOrNo(delivery.data);
	
	string += "</td></tr><tr><td><b>Take Reservation:</b> ";
	if ( reservation == null )
		string += "<i style='color: gray'>no data</i>";
	else
		string += yesOrNo(reservation.data);
	
	string += "</td><td style='padding-left: 20px;'><b>Family-friendly:</b> "; 
	if ( family == null )
		string += "<i style='color: gray'>no data</i>";
	else	
		string += "" + yesOrNo(family.data);	
	
	string += "</td></tr><tr><td><b>Accept Credit Cards:</b> "; 	
	if ( creditCard == null )
		string += "<i style='color: gray'>no data</i>";
	else	
		string += yesOrNo(creditCard.data);
	
	string += "</td><td style='padding-left: 20px;'><b>Good For Groups:</b> "; 
	if ( groups == null )
		string += "<i style='color: gray'>no data</i>";
	else	
		string += yesOrNo(groups.data);
	
	block.innerHTML = string + "</td></tr></table></div>"+
	"</td><td width='40%' style='border: 0px solid black;'>"+
	"<div id='map' style='float: right; margin-top: 10px; margin-right: 10px; width: 350px; height: 255px; border: 2px solid gray; text-align: center;'>Loading Map ...</div>"+
	"</td></tr></table>";
	
	if ( lat != null && lon != null )
	{
		document.getElementById("rightOne").innerHTML =
			"<div class='error' id='message'></div>"+ 
			"<div style='font-weight: bold; font-size: 12px; text-align: left;'>"+
			"<br/>From: "+
			"<input size='50' id='fromAddress' name='from' value='' type='text' onkeydown='if(event.keyCode==13)setDirections();'/><br/><br/>"+
			"To: "+rest_name+"<br/><br/><center>"+
			"<input onClick='setDirections()' class='button' id='dirButton' name='dirButton' value=' Get Directions ' type='button'/> &nbsp; <div id='action'></div></center></div><div id='direction'></div>";
		loadMap(lat.data, lon.data, 10);			
		buildMap2(lat, lon);
	}
	else
	{
		loadMap(0,0,2);
		buildMap2(0,0);		
		document.getElementById("rightOne").innerHTML = "<span class='empty'>Direction for this restaurant is not available.</span>";			
	}
}

function buildMap2(lat, lon)
{
	if ( map != null )
		map.clearOverlays();

	gdir = new GDirections(map, document.getElementById("direction"));
    GEvent.addListener(gdir, "load", onGDirectionsLoad);
    GEvent.addListener(gdir, "error", handleErrors);
		
    var point = new GLatLng(lat.data, lon.data);
	bounds = new GLatLngBounds();
	bounds.extend(point);
	baseIcon.iconSize = new GSize(32,32);
	var icon = new GIcon(baseIcon);
	icon.image = imageUrl+"marker.png";
	var marker = new GMarker(point, icon);
	//var opts = {maxWidth:240};  
	//GEvent.addListener(marker,"mouseover", function(){marker.openInfoWindowHtml(str, opts);});
	map.addOverlay(marker);
	//map.openInfoWindowHtml(point, str);
}

function setDirections() 
{
	if ( !hasApp )
		document.getElementById("message").innerHTML = "<br/>You must have this appplication installed in order to search for restaurants. Click <a href='"+installUrl+"'>here</a> to install.";
	else if ( document.getElementById("fromAddress").value == "" )
		document.getElementById("message").innerHTML = "<br/>Please enter your address.";
	else
	{
		document.getElementById("dirButton").value = " Getting directions ... ";
  		gdir.load("from: " + document.getElementById("fromAddress").value + " to: " + rest_address );
	}
}

function onGDirectionsLoad()
{
	document.getElementById("direction").innerHTML = "";
	document.getElementById("dirButton").value = " Get Directions ";
	document.getElementById("direction").style.display = "block";
	document.getElementById("action").innerHTML = "<a href='javascript:{}' onClick='displayDiv(\"none\");'>Hide</a>";
	map.clearOverlays();
} 

function displayDiv(display)
{
	document.getElementById("direction").style.display = display;
	if ( display == "none" )
		document.getElementById("action").innerHTML = "<a href='javascript:{}' onClick='displayDiv(\"block\");'>Show</a>";
	else
		document.getElementById("action").innerHTML = "<a href='javascript:{}' onClick='displayDiv(\"none\");'>Hide</a>";
}

function handleErrors()
{
   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
     document.getElementById("message").innerHTML = "<br/>No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code;
   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
     document.getElementById("message").innerHTML = "<br/>A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code;
   
   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
     document.getElementById("message").innerHTML = "<br/>The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code;

//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
     
   else if (gdir.getStatus().code == G_GEO_BAD_KEY)
     document.getElementById("message").innerHTML = "<br/>The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code;

   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
     document.getElementById("message").innerHTML = "<br/>A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code;
    
   else document.getElementById("message").innerHTML = "<br/>An unknown error occurred. Please try again.";
   
}

function processFriendsReviews(response)
{	
	var string ="";
	var xml = response.data;
	
	if ( !xml || xml.getElementsByTagName("head")[0].firstChild == null )
	{
		document.getElementById("leftOne").innerHTML = "<br/><span class='empty'>No friends have reviewed this restaurant yet. <a href='javascript:();' onClick='printInvitePage();'>Invite</a> them!</span><br/>";
		document.getElementById("leftOneHead").innerHTML += " (0)";
	}
	else
	{
		var uids = xml.getElementsByTagName("uid");
		var ratings = xml.getElementsByTagName("rating");
		var reviews = xml.getElementsByTagName("review");
		var authors = xml.getElementsByTagName("author");
		var dtses = xml.getElementsByTagName("dts");
				
		for (var i = 0; i < uids.length; i++ )
		{
			string += "<tr style='vertical-align:middle; font-size: 10px;'>"+
			"<td class='friend_author' onClick='printProfilePage(\""+authors[i].firstChild.data+"\")'>"+
			"<img width='42' height='42' src='"+uid_thumb[uids[i].firstChild.data]+"'/><br/>" + 
			uid_name[uids[i].firstChild.data]+"</td><td>"+
			"<img class='icon' src='"+imageUrl+"rt"+ratings[i].firstChild.data+".gif'/>"+
			" &nbsp; &nbsp; <img class='icon' src='"+imageUrl+"icon_dts.gif'/> "+ dtses[i].firstChild.data+
			"<br/><img class='icon' src='"+imageUrl+"icon_review.gif'/> "+
			"<span style='color: #444'>"+reviews[i].firstChild.data+"</span></td></tr>";	      
		}
		
		document.getElementById("leftOneHead").innerHTML += " ("+uids.length+")";
		document.getElementById("leftOne").innerHTML = "<table cellspacing='5px'>"+string+"</table>";
	}
	
	gadgets.io.makeRequest(requestUrl+"getrestreview.php", function(response){processRestReviews(response, 1, true)},
		{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':"site="+site+"&page=1&needNumber=true&rid="+rest_id+"&uids="+friends_uids+"&username="+username, 'CONTENT_TYPE':gadgets.io.ContentType.DOM});
}

function pageRestReviews(pageNum)
{
	gadgets.io.makeRequest(requestUrl+"getrestreview.php", function(response){processRestReviews(response, pageNum, false)},
		{'METHOD' : gadgets.io.MethodType.POST, 
		'POST_DATA':"site="+site+"&needNumber=false&rid="+rest_id+"&page="+pageNum+"&uids="+friends_uids+"&username="+username, 
		'CONTENT_TYPE':gadgets.io.ContentType.DOM});
}

function processRestReviews(response, pageNum, load)
{	
	var xml = response.data;
	
	if ( load )
	{
		var number = xml.getElementsByTagName("number")[0].firstChild.data;
		document.getElementById("leftTwoHead").innerHTML += " ("+number+")";
		pageResult = Math.ceil(number / 10);
		
		gadgets.io.makeRequest(requestUrl+"getrestuser.php",processRestUser,
		{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':"rid="+rest_id+"&username="+username, 'CONTENT_TYPE':gadgets.io.ContentType.DOM});
	}
		
	var ratings = xml.getElementsByTagName("rating");
	var authors = xml.getElementsByTagName("author");
	var ilinks =xml.getElementsByTagName("ilink");
	var reviews = xml.getElementsByTagName("review");
	var dtses = xml.getElementsByTagName("dts");

	var string = "";
	var string2 = "";
	
	if ( ratings.length > 0 )
	{	
		for (var i = 0; i < ratings.length; i++ )
		{
			string += "<tr style='vertical-align:top; font-size: 10px;'>"+
			    "<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>"+		
				"<td style='vertical-align: middle'><img class='icon' src='"+imageUrl+"rt"+ratings[i].firstChild.data+".gif'/>"
				+" &nbsp; &nbsp; <img class='icon' src='"+imageUrl+"icon_dts.gif'/> " + dtses[i].firstChild.data +
				"<br/><img class='icon' src='"+imageUrl+"icon_review.gif'/> "+
				"<span style='color: #444'>"+reviews[i].firstChild.data+"</span></td></tr>";	      
		}
		
		string2 = "<tr><td colspan='2' 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 span='click' onClick='pageRestReviews("+(pageNum-1)+")'>"+
				"<img class='icon' src='"+imageUrl+"icon_prev.gif'/></span>";				
		
		string2 += " page " + pageNum + " ";
		
		//if not last page, then print next
		if ( pageNum != pageResult )
			string2 += 	"<span class='click' onClick='pageRestReviews("+(pageNum+1)+")'>"+
						"<img class='icon' src='"+imageUrl+"icon_next.gif'/></span>";
		
		string2 += "</td></tr>";
	
	
		document.getElementById("leftTwo").innerHTML = "<table cellspacing='5'>"+ string2 + string + string2 + "</table>";
	}
	else
	{
		document.getElementById("leftTwo").innerHTML = "<br/><span class='empty'>There is no Travature review for this restaurant. Be the first to review!</span>";
	}
	
	//gadgets.window.adjustHeight();
}

function processRestUser(response)
{
	var xml = response.data;
	var fav = xml.getElementsByTagName("fav")[0].firstChild;
	var try1 = xml.getElementsByTagName("try")[0].firstChild;
	var visitedDate = xml.getElementsByTagName("visitedDate")[0].firstChild;
	var review = xml.getElementsByTagName("review")[0].firstChild;
	var rating = xml.getElementsByTagName("rating")[0].firstChild;
	var dts = xml.getElementsByTagName("dts")[0].firstChild;
	var string = "";
	string = "<br/><div id='errorMsg' class='error'>";
	
	if ( !isOwner )
	{
		if ( hasApp )
			string += "Click <a href='"+appUrl+"'>here</a> to review this restaurant."
		else	
			string += "Click <a href='"+installUrl+"'>here</a> to review this restaurant."
	}

	string += "</div><br/><div style='line-height: 25px; font-size: 12px;'><img class='icon' src='"+imageUrl+"icon_fav.gif'/> &nbsp; <b>Favourites?</b> &nbsp; "+
		"<input id='rating' type='hidden' value=''/><input id='favBox' ";
		
	if ( fav != null && fav.data == 1)
		string += " checked='checked' "; 
			
	string += "type='checkbox'/><br/>"+
		"<img class='icon' src='"+imageUrl+"icon_try.gif'/> &nbsp; <b>Wanna Try?</b> &nbsp; "+
		"<input id='tryBox' ";
	if ( try1 != null && try1.data == 1)
		string += " checked='checked' "; 	
	string += "type='checkbox'/><br/>"+
		"<img class='icon' src='"+imageUrl+"icon_visited.gif'/> &nbsp; <b>Visited When?</b> <span style='font-size:10px; color: gray'>(mm/dd/yyyy)</span> &nbsp; "+
		"<input id='visitedBox' style='background-color: #F2F5F9; border: 1px solid #5888C6' type='input' size='10' value='";
	if ( visitedDate != null && visitedDate.data != '' )
	{
		string += visitedDate.data;
		visited = true;
		mydate = visitedDate.data;
	} 
	string += "'/><br/><img class='icon' src='"+imageUrl+"icon_dts.gif'/> &nbsp; <b>On</b> ";
	if ( dts != null && dts.data != '' )
		string += dts.data;
	else
	{
		var today=new Date();
		string += (today.getMonth()+1)+"/"+today.getDate()+"/"+today.getFullYear();
	} 	
	string += "<br/> &nbsp; &nbsp; &nbsp; <b>My Rating</b> &nbsp; &nbsp; ";
	if ( rating != null && rating.data > 0 )
	{
		myrating = rating.data;
		rating = rating.data + '0';
		reviewed = true;
	}	
	else
		rating = 0;
		
	if ( isOwner )
	{
		string += "<span class='inline-rating'>"+							
				"<ul class='star-rating'>"+
				"<li id='liRating' class='current-rating' style='width:"+rating+"%;'></li>"+
				"<li><a href='#' title='0.5 stars out of 5' class='half-star' onClick='document.getElementById(\"rating\").value=1;document.getElementById(\"liRating\").style.width=\"10%\"'>0.5</a></li>"+
				"<li><a href='#' title='1 star out of 5' class='one-star' onClick='document.getElementById(\"rating\").value=2;document.getElementById(\"liRating\").style.width=\"20%\"'>1</a></li>"+
				"<li><a href='#' title='1.5 stars out of 5' class='onehalf-star' onClick='document.getElementById(\"rating\").value=3;document.getElementById(\"liRating\").style.width=\"30%\"'>1.5</a></li>"+
				"<li><a href='#' title='2 stars out of 5' class='two-stars' onClick='document.getElementById(\"rating\").value=4;document.getElementById(\"liRating\").style.width=\"40%\"'>2</a></li>"+
				"<li><a href='#' title='2.5 stars out of 5' class='twohalf-stars' onClick='document.getElementById(\"rating\").value=5;document.getElementById(\"liRating\").style.width=\"50%\"'>2.5</a></li>"+
				"<li><a href='#' title='3 stars out of 5' class='three-stars' onClick='document.getElementById(\"rating\").value=6;document.getElementById(\"liRating\").style.width=\"60%\"'>3</a></li>"+
				"<li><a href='#' title='3.5 stars out of 5' class='threehalf-stars' onClick='document.getElementById(\"rating\").value=7;document.getElementById(\"liRating\").style.width=\"70%\"'>3.5</a></li>"+
				"<li><a href='#' title='4 stars out of 5' class='four-stars' onClick='document.getElementById(\"rating\").value=8;document.getElementById(\"liRating\").style.width=\"80%\"'>4</a></li>"+
				"<li><a href='#' title='4.5 stars out of 5' class='fourhalf-stars' onClick='document.getElementById(\"rating\").value=9;document.getElementById(\"liRating\").style.width=\"90%\"'>4.5</a></li>"+
				"<li><a href='#' title='5 stars out of 5' class='five-stars' onClick='document.getElementById(\"rating\").value=10;document.getElementById(\"liRating\").style.width=\"100%\"'>5</a></li>"+
				"</ul></span>"+
				" &nbsp; &nbsp; <span style='cursor: pointer; color: #314973; font-size: 10px; font-weight: bold; text-decoration: underline;' onClick='clearReview()'>Clear</span>";
	}
	else
		string += "<img class='icon' src='"+imageUrl+"/rt"+myrating+".gif'/>";
	
	string += "<br/> &nbsp; &nbsp; &nbsp; <b>My Review</b><br/> &nbsp; &nbsp; <textarea style='background-color: #F2F5F9; border: 1px solid #5888C6' id='reviewBox' cols='40' rows='10'>";
	
	if ( review != null )
	{
		myreview = review.data;
		string += review.data;
	} 
	
	string += "</textarea><br/><br/><center><input id='reviewButton' style='background-color: #D9E6F7; border: 3px double #5888C6; font-weight: bold;' type='button' onClick='checkReview()' value='Submit'/></center></div>";
	
	document.getElementById("rightTwo").innerHTML = string;
	document.getElementById("rating").value = myrating;
	
	if ( !isOwner )
	{
		document.getElementById("favBox").disabled = true;
		document.getElementById("tryBox").disabled = true;
		document.getElementById("visitedBox").disabled = true;
		document.getElementById("reviewBox").disabled = true;
		document.getElementById("reviewButton").disabled = true;
	}
}

function clearReview()
{
	document.getElementById("rating").value = 0;
	document.getElementById("liRating").style.width="0%";
}

function checkReview()
{
	document.getElementById("reviewButton").value = "Checking data...";
	document.getElementById('errorMsg').innerHTML = "";
	var query = "username="+username+"&rid="+rest_id;
	var favValue = document.getElementById("favBox").checked;
	
	if ( favValue )
		query += "&fav=1";
	else
		query += "&fav=0";
		
	var tryValue = document.getElementById("tryBox").checked;
	
	if ( tryValue )
	{
		if ( reviewed )
		{
			document.getElementById('errorMsg').innerHTML = "You cannot set it to wanna try if you have reviewed it.<br/>";
			document.getElementById('liRating').style.width = myrating + "0";
			document.getElementById('rating').value = myrating;
			document.getElementById('reviewBox').value = myreview;
			document.getElementById('visitedBox').value = mydate;
			document.getElementById("reviewButton").value = "Submit";
			return;
		}
		
		if ( visited )
		{
			document.getElementById('visitedBox').value = mydate;
			document.getElementById("reviewButton").value = "Submit";
			return;
		}
		
		if ( document.getElementById("favBox").checked ||
			document.getElementById("visitedBox").value != "" ||
			document.getElementById("reviewBox").value != "" ||
			document.getElementById("rating").value != "0" )
		{
			document.getElementById('errorMsg').innerHTML = "If it is a wanna try, all other fields have to be empty.<br/>";
			document.getElementById("reviewButton").value = "Submit";
			return;
		}
		else
			query += "&try=1";
	}
	else
		query += "&try=0";
	
	var lastValue = document.getElementById("visitedBox").value;
	if ( lastValue != "" )
	{
		if ( !validateDate(lastValue) )
		{
			document.getElementById('errorMsg').innerHTML = "There is a problem with the given date format.<br/>";
			document.getElementById("reviewButton").value = "Submit";
			return;
		}
		else
		{
			var today = new Date();
			var input = makeDate(lastValue);
			
			if ( input > today )
			{
				document.getElementById('errorMsg').innerHTML = "Given date has to be on or before today.<br/>";
				document.getElementById("reviewButton").value = "Submit";
				return;
			}
			else
				query += "&visitedDate="+lastValue;
		}
	}
	else
		query += "&visitedDate=";
	
	var reviewValue = document.getElementById("reviewBox").value;
	if ( reviewValue != "" )
	{
		query += "&review="+escape(reviewValue);
		var ratingValue = document.getElementById("rating").value;
		if ( ratingValue == "" || ratingValue == 0 )
		{
			document.getElementById('errorMsg').innerHTML = "Please rate the restaurant.<br/>";
			document.getElementById("reviewButton").value = "Submit";
			return;
		}
		else
			query += "&rating="+ratingValue;
	}
	else
	{
		query += "&review=";	
		var ratingValue = document.getElementById("rating").value;
		if ( ratingValue > 0 )
		{
			document.getElementById('errorMsg').innerHTML = "Please write a review.<br/>";
			document.getElementById("reviewButton").value = "Submit";
			return;
		}
		else
			query += "&rating=";
	}

	gadgets.io.makeRequest(requestUrl+"submitreview.php", function(response){
		processReview(response.data, favValue, tryValue, lastValue, reviewValue, ratingValue)},
		{'METHOD' : gadgets.io.MethodType.POST, 'POST_DATA':query, 'CONTENT_TYPE':gadgets.io.ContentType.TEXT});		
}

function processReview(data, favValue, tryValue, lastValue, reviewValue, ratingValue)
{
	if ( data == "true" )
	{	
		document.getElementById("errorMsg").innerHTML = "<font color='blue'>My data has been saved.</font>";
	}
	else
		document.getElementById("errorMsg").innerHTML = "Sorry, an error has occured. Please try again.";
	document.getElementById("reviewButton").value = "Submit";

}

function validateDate( strValue ) 
{
	var pattern = new RegExp("^(0[1-9]|1[012]|[1-9])(-|/)(0[1-9]|[12][0-9]|3[01]|[1-9])(-|/)(20[0-9]{2}|[0-9]{2})$");
	//check to see if in correct format
	if(!strValue.match(pattern))
		return false; //doesn't match pattern, bad date
	else
	{
		var strSeparator = strValue.substring(2,3) 
		var arrayDate = strValue.split(strSeparator); 
		//create a lookup for months not equal to Feb.
		var arrayLookup = { '01' : 31,'03' : 31, 
							'04' : 30,'05' : 31,
							'06' : 30,'07' : 31,
							'08' : 31,'09' : 30,	
							'10' : 31,'11' : 30,'12' : 31}
		var intDay = parseInt(arrayDate[1],10); 

		//check if month value and day value agree
		 if(arrayLookup[arrayDate[0]] != null) 
		{
			if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
				return true; //found in lookup table, good date
		 }
    
		//check for February (bugfix 20050322)
		//bugfix  for parseInt kevin
		//bugfix  biss year  O.Jp Voutat
		var intMonth = parseInt(arrayDate[0],10);
		if (intMonth == 2) 
		{
			var intYear = parseInt(arrayDate[2]);
			if (intDay > 0 && intDay < 29) 
			{
				return true;
			}
			else if (intDay == 29) 
			{
				if ((intYear % 4 == 0) && (intYear % 100 != 0) || 
							(intYear % 400 == 0)) 
				{
					// year div by 4 and ((not div by 100) or div by 400) ->ok
					return true;
				}   
			}
		} 
		return true;
	}  
	
	return false; //any other values, bad date
}

function makeDate(str)
{
	//get input day,month, year
	var separator = str.substring(2,3);
	if (isDigit(separator))
		separator = str.substring(1,2);
		
	//dateArray[0] = month, [1] = day, [2] = year
	var dateArray = str.split(separator); 
	var searchDate = new Date();
	
	searchDate.setDate(dateArray[1]);
	searchDate.setMonth(dateArray[0]);
	searchDate.setMonth(searchDate.getMonth() - 1); //weird bug fix for 08 and 09
	
	if ( dateArray[2].length != 4 )
		dateArray[2] = '20' + dateArray[2];
	searchDate.setFullYear(dateArray[2],dateArray[0]-1, dateArray[1]);
	return searchDate;
}

function yesOrNo(data)
{
	if ( data == "1" )
		return "Yes";
	else
		return "No";
}

function getPriceRange(data)
{
	if ( data ==  "1" )
		return 'Cheap $1 - $10';
	else if ( data == "2" )
		return 'Typical $10 - $20';
	else if ( data == "3" )
		return 'Classy $20 - $50';
	else
		return 'Empty your wallet > $50';		
}

function getDressAttire(data)
{
	if ( data == "1" )
		return 'Anything goes!';
	else if ( data == "2" )
		return 'No shirt, no shoes, no service';
	else if ( data == "3" )
		return 'Casual';
	else if ( data == "4" )
		return 'Dress to impress';
	else
		return 'Black tie affair';
}