function trim(sInString) {
	sInString = sInString.replace( /^\s+/g, "" );
	return sInString.replace( /\s+$/g, "" );
}

function positionMsgBox(obj) {
	if (window.orientation == 0)
		obj.style.marginTop = (window.pageYOffset + 50) + "px";
        else
		obj.style.marginTop = (window.pageYOffset - 20) + "px";
}

function loadingMsg(msg)
{
	return '<center><div><img src="i/loading.gif"><br />'+msg+'</div></center>';
}

function updateMenu(obj, obj_menu)
{
	var req = new XMLHttpRequest();

	req.onreadystatechange = function()
	{
		if (req.readyState == 4) {
			if (req.responseText == null) 
				obj_menu.style.display = "none";
			else {
				if (obj_menu.style.display == "none")
					obj_menu.style.display = "";
	                	obj_menu.innerHTML = req.responseText;
			}
			obj_val = obj.value;
            	}
        };

	var url = obj.getAttribute("url")+"?query="+encodeURIComponent(obj.value)+"&obj_id="+encodeURIComponent(obj.id);
        req.open("GET", url, true);
        req.send(null);
}

function autocomplete(obj_id, obj_menu_id)
{
	var obj = $(obj_id);
	var obj_menu = $(obj_menu_id);
	if (obj.value != "" && obj_val != obj.value)
	{
		updateMenu(obj, obj_menu);
	}
}

function startAutoComplete(obj, obj_menu_id){
	obj_val = '';
	autocomplete_timer = setInterval("autocomplete('"+obj.id+"','"+obj_menu_id+"')",500);
}

function hideMenu(obj_menu_id)
{
	$(obj_menu_id).style.display = "none";
}

function stopAutoComplete(obj,obj_menu_id) {
	setTimeout("hideMenu('"+obj_menu_id+"')",500);
	clearInterval(autocomplete_timer);
}

function initPreviewPhotos(obj_html, obj_id)
{
	var nodes = $(obj_html).childNodes;

	for (var i = 0; i < nodes.length; i++)
	{
		var node = nodes[i];
		if (node.tagName.toLowerCase() == "img")
		{
			var found = false;
			var imgs = $("myphotos_list").childNodes;
			for (var j = 0; j < imgs.length; j++)
			{
				var nodej = imgs[j];
				
				if (nodej.tagName && nodej.tagName.toLowerCase() == "img" && nodej.src.replace("75x75","55x55") == node.src)
				{
					nodej.setAttribute("added","true");
					break;
				}
			}
		}
	}

	$(obj_id).value = "";
	for (var i = 0; i < nodes.length; i++)
	{
		var node = nodes[i];
		if (node.tagName && node.tagName.toLowerCase() == "img")
			$(obj_id).value += node.src.replace(/.*\//g,"")+",";
	}
}

function removeReviewPhoto(obj, obj_html, obj_id)
{
	var nodes = $(obj_html).childNodes;
	obj.parentNode.removeChild(obj);
        $(obj_id).value = "";
        for (var i = 0; i < nodes.length; i++)
        {
                var node = nodes[i];
                if (node.tagName && node.tagName.toLowerCase() == "img")
                        $(obj_id).value += node.src.replace(/.*\//g,"")+",";
        }
}

function updateReviewPhotos(obj,obj_html, obj_id)
{

	var nodes = $(obj_html).childNodes;

	if (obj.getAttribute("added") == "true")
	{
		for (var i = 0; i < nodes.length; i++)
		{
			var node = nodes[i];
			if (node.tagName.toLowerCase() == "img" && node.src.replace("55x55","75x75") == obj.src)
			{
				node.parentNode.removeChild(node);
				obj.setAttribute("added", "");
				break;
			}
		}
	} else {
		var found = false;
		for (var i = 0; i < nodes.length; i++)
		{
			var node = nodes[i];
			if (node.tagName.toLowerCase() == "img" && node.src.replace("55x55","75x75") == obj.src)
			{
				found = true;
				break;
			}
		}
		if (!found) {
			obj.setAttribute("added","true");
			$(obj_html).innerHTML += '<img onclick="removeReviewPhoto(this,\''+obj_html+'\',\''+obj_id+'\')" src="'+obj.src.replace("75x75","55x55")+'" />';
		}
	}

	$(obj_id).value = "";
	for (var i = 0; i < nodes.length; i++)
	{
		var node = nodes[i];
		if (node.tagName && node.tagName.toLowerCase() == "img")
			$(obj_id).value += node.src.replace(/.*\//g,"")+",";
	}
}

review_ratings = new Object;

review_ratings['review_rating_food'] = 3;
review_ratings['review_rating_value'] = 3;
review_ratings['review_rating_service'] = 3;
review_ratings['review_rating_ambience'] = 3;

image_star_blue = new Image();
image_star_grey = new Image();
image_star_blue.src = "i/star_blue.png";
image_star_grey.src   = "i/star_gray.png";

function setRating(type,val)
{
	if (review_ratings[type] == val)
	{
		for (var i = 1; i <= val; i++)
			$(type+"_"+i).src = image_star_grey.src;

		review_ratings[type] = 0;
		$(type).value = 0;
		return;		
	} 
	
	$(type).value = val;
	for (var i = 1; i <= 5; i++)
	{
		if (i <= val && $(type+"_"+i) != image_star_blue.src)
			$(type+"_"+i).src = image_star_blue.src;
		else if (i > val && $(type+"_"+i) != image_star_blue.src) 
			$(type+"_"+i).src = image_star_grey.src;
	}
	review_ratings[type] = val;
}

checklist = new Object;

function presetChecklist(menu_id, html_obj_id, input_obj_id)
{
	var menu = $(menu_id);

	if (checklist[html_obj_id] == null) {
		checklist[html_obj_id] = new Object;
		checklist[html_obj_id]['selected'] = "<label>"+$(input_obj_id).value+"</label>";
	}

	if (checklist['cur_menu'] == null) checklist['cur_menu'] = new Object;
	
	checklist['cur_menu']['html_obj_id']  = html_obj_id;
	checklist['cur_menu']['input_obj_id'] = input_obj_id;

	for (var i = 0; i < menu.childNodes.length; i++)
	{
		var node = menu.childNodes[i];

		if (node.tagName && node.tagName.toLowerCase() == "fieldset")
		{
			for (var j = 0; j < node.childNodes.length; j++)
			{
				var item = node.childNodes[j];
				if (item.tagName && item.tagName.toLowerCase() == "div")
				{
					if (checklist[html_obj_id]['selected'] == item.innerHTML) {
						item.style.backgroundImage="url(i/BlueCheck.png)";
						checklist[html_obj_id]['sel_obj'] = item;
					} else item.style.backgroundImage = "none";
				}
			}
		}
	}
}

function setChecklist(obj, val)
{
	var html_obj_id  = checklist['cur_menu']['html_obj_id'];
	var input_obj_id = checklist['cur_menu']['input_obj_id'];

	if (checklist[html_obj_id]['sel_obj']  == obj)
	{
		if (html_obj_id != null) $(html_obj_id).innerHTML = '';
		if (input_obj_id != null) $(input_obj_id).value = '';
		obj.style.backgroundImage = "none";
		checklist[html_obj_id]['selected'] = '';
		checklist[html_obj_id]['sel_obj'] = null;
		return;
	}
		
	if (html_obj_id != null) $(html_obj_id).innerHTML = val;
	if (input_obj_id != null) $(input_obj_id).value = val;

	if (checklist[html_obj_id]['sel_obj'] != null)
		checklist[html_obj_id]['sel_obj'].style.backgroundImage = "none";

	checklist[html_obj_id]['sel_obj'] = obj;
	checklist[html_obj_id]['selected'] = obj.innerHTML;
        obj.style.backgroundImage="url(i/BlueCheck.png)";
}

function clearTextArea(textarea_id, input_id, div_id)
{
	$(textarea_id).value = '';
	$(input_id).value = ''; 
	$(div_id).innerHTML = '';
}

function formatTextArea(str)
{
	str = str.replace(/\n\n/g,"<p />")
	str = str.replace(/\n/g,"<br />")
	return str;
}

function checkPassword(obj,passwd1, passwd2)
{
	if (passwd1 != "" && passwd2 != "" && passwd1 != passwd2) {
		obj.value = "";
		alert("Both passwords entered do not match");
	}
}

function encodeForm(form)
{
	function encode(inputs)        
	{
		for (var i = 0; i < inputs.length; ++i)
		{
			if (inputs[i].name) args.push(inputs[i].name + "=" + encodeURIComponent(inputs[i].value));
		}    
	}    
	var args = [];
	encode(form.getElementsByTagName("input"));
	encode(form.getElementsByTagName("select"));
	return args;             
}  

function setCookie(cookieName,cookieValue,nDays) {
	var today = new Date();
	var expire = new Date();
	if (nDays==null || nDays==0) nDays=1;
	expire.setTime(today.getTime() + 3600000*24*nDays);
	document.cookie = cookieName+"="+encodeURIComponent(cookieValue) + ";expires="+expire.toGMTString();
}

function togglePhotoButtons(prefix)
{
	if ($(prefix+"_buttons").style.display == "none" && $(prefix+"_delete").style.display == "none" && $(prefix+"_status").style.display == "none") 
		$(prefix+"_buttons").style.display = "";
	else 
		$(prefix+"_buttons").style.display = "none";
}

function refreshMyPhoto(flag)
{
	var orientation=window.orientation;

	if ($("myphoto") && 
		(flag == 0 || $("myphoto").getAttribute("selected") == "true") && 
		$("myphoto_status").style.display == "none")
	{
		var obj =  $("myphoto");
		if (orientation == 0) {
			$("myphoto_buttons").style.marginTop = "190px";
			obj.style.backgroundPosition = "center center";
			obj.style.backgroundImage =  'url('+obj.getAttribute("p_url")+')';
		} else {			
			$("myphoto_buttons").style.marginTop = "40px";
			obj.style.backgroundPosition = "top center";
			obj.style.backgroundImage = 'url('+obj.getAttribute("l_url")+')';
		}
	}
	setTimeout('positionMsgBox($("myphoto_status"))',100);
	setTimeout('positionMsgBox($("myphoto_delete"))',100);
}

function refreshPage(obj_id, url, post_code)
{
	if (!$(obj_id)) return;
        var req = new XMLHttpRequest();
        req.onreadystatechange = function()
	{
		if (req.readyState == 4 && $(obj_id)) {
			$(obj_id).outerHTML = req.responseText.replace(/selected="true"/g,"");
			if (post_code != "")
				eval(post_code);
		}
        };

	req.open("GET", url, true);
	req.send(null);
}

function updateStatus(url, obj_id, post_code, hide)
{
        var req = new XMLHttpRequest();
        req.onreadystatechange = function()
	{
		if (req.readyState == 4) {
			$(obj_id).innerHTML = req.responseText;
			if (post_code != "") {
				setTimeout(post_code, 2000);
			}
            	} 
		if (hide) setTimeout('$("'+obj_id+'").style.display = "none"',2000);
        };
	req.open("GET", url, true);
	req.send(null);
}


function updateProfile()
{
	refreshPage("updateprofile","myprofile.htm?","");
}

function setAvatar()
{
	var url = "setavatar.htm?photo_id="+$("myphoto").getAttribute("photo_id");

	setTimeout('$("myphoto_buttons").style.display = "none"',100);
	$("myphoto_status").innerHTML = loadingMsg('Setting avatar');
	positionMsgBox($("myphoto_status"));
	setTimeout('$("myphoto_status").style.display = ""',150);
	setTimeout('updateStatus("'+url+'","myphoto_status","updateProfile()", true)',1000);	
}

function updatePhotoTags()
{
	var url = "updatephototags.htm?photo_id="+$("myphoto_id").value+"&photo_tags="+encodeURIComponent($('myphoto_tags').value);
	positionMsgBox($("myphototags_status"));

	$("myphototags_status").innerHTML = loadingMsg('Updating photo tags');

	setTimeout('$("myphototags_status").style.display = ""',150);
	setTimeout('updateStatus("'+url+'","myphototags_status","refreshPage(\'myphotos\',$(\'myphotos\').getAttribute(\'url\'),\'\')",true)',1000);	
}

function refreshPhoto()
{
	if (window.orientation == 0) {
		$("photo").style.backgroundPosition = "center center";
		$("photo").style.backgroundImage = 'url('+$("photo").getAttribute("p_url")+')';
	} else {
		$("photo").style.backgroundPosition = "top center";
		$("photo").style.backgroundImage = 'url('+$("photo").getAttribute("l_url")+')';
	}
	setTimeout('positionMsgBox($("photo_buttons"))',100);
}

function updateOrientation()
{
	if ($("myphoto") && $("myphoto").getAttribute("selected") == "true")
		setTimeout('refreshMyPhoto(1)',100);
	else if ($("photo") && $("photo").getAttribute("selected") == "true")
		setTimeout('refreshPhoto(1)',100);
}

function completeDeletePhoto()
{
	updateProfile();
	refreshPage("myphotos", $("myphotos").getAttribute("url"),"history.back()");
}

function deletePhoto(photo_id)
{
	var url = "deletephoto.htm?photo_id="+photo_id;

	setTimeout('$("myphoto_buttons").style.display = "none"',100);
	setTimeout('$("myphoto_delete").style.display = "none"', 100);
	$("myphoto_status").innerHTML = loadingMsg('Deleting photo');
	positionMsgBox($("myphoto_status"));
	setTimeout('$("myphoto_status").style.display = ""',150);
	setTimeout('updateStatus("'+url+'","myphoto_status","completeDeletePhoto()",true)',1000);	
}

function cancelDeletePhoto()
{
	setTimeout('$("myphoto_delete").style.display = "none"',100);
}

function deletePhotoMenu()
{
	positionMsgBox($("myphoto_delete"));
	setTimeout('$("myphoto_buttons").style.display = "none"', 100);
	setTimeout('$("myphoto_delete").style.display = ""', 150);
}

function completeRemoveReview(id)
{
	refreshReviewsItem(id, -1, "setTimeout(\"$('review_"+id+"_status').style.display = 'none'; history.back()\",1000);");
}

function removeReview(id, option)
{
	var review_delete = "review_"+id+"_delete";
	var review_status = "review_"+id+"_status";

	if (option == 0) {
		positionMsgBox( $(review_delete));
		$(review_delete).style.display = "";
	} else if (option == 1) {
		$(review_delete).style.display = "none";
	} else if (option == 2) {
		$(review_delete).style.display = "none";
		$(review_status).innerHTML = loadingMsg('Removing review');
		positionMsgBox($(review_status));
		$(review_status).style.display  = "";
		updateStatus("removereview.htm?review_id="+id,review_status,"completeRemoveReview("+id+")",true);
	}
}

function recommendReview(id, option)
{
	var review_recommend = "review_"+id+"_recommend";
	var review_status = "review_"+id+"_status";

	if (option == 0) {
		positionMsgBox($(review_recommend));
		$(review_recommend).style.display = "";
	} else if (option == 1) {
		$(review_recommend).style.display = "none";
	} else if (option == 2) {
		positionMsgBox($(review_status));
		$(review_recommend).style.display = "none";
		$(review_status).innerHTML = loadingMsg('Recommending review');
		$(review_status).style.display = "";
		updateStatus("reviewrecommend.htm?recommend=1&review_id="+id,review_recommend+"_html","setTimeout('$(\""+review_status+"\").style.display=\"none\"',100)",false);
	}
}

function toggleCommentInput(id, prefix, args)
{
	$(prefix+'_button').style.display='none';
	
	if ($(prefix+'_input').innerHTML == "")
		updateStatus('commentform.htm?'+args+'&prefix='+prefix+'&review_id='+id,prefix+'_input','',false);
	else {
		$(prefix+'_textarea').value = '';
		$(prefix+'_text').value = '';
		$(prefix+'_input').style.display='';
	}
}

function refreshCommentsPage(id)
{
        var req = new XMLHttpRequest();
        req.onreadystatechange = function()
	{
		if (req.readyState == 4) {
			var frag = document.createElement("div");
			frag.innerHTML = req.responseText;

			var nodes = frag.childNodes;
			
			for (var i = 0; i < nodes.length; i++)
			{
				var node = nodes[i];
				if (node.tagName.toLowerCase() == "ul")
				{
					$("comments_"+id).innerHTML = node.innerHTML
					$("comments_"+id).setAttribute("url","comments.htm?review_id="+id);
					break;
				}
			}
		}
        };

	req.open("GET", "comments.htm?review_id="+id, true);
	req.send(null);
}

function submitComment(prefix, id)
{
	var name_type = '';

	for (var i=0; i < $(prefix+"_form").comment_name_radio.length; i++)
	{
 		if ($(prefix+"_form").comment_name_radio[i].checked)
		{
     			name_type = $(prefix+"_form").comment_name_radio[i].value;
			break;
		}
  	}

	$(prefix+"_type").value = name_type;
	$(prefix+"_text").value = $(prefix+"_textarea").value;


	positionMsgBox($(prefix+"_status"));
	if (trim($(prefix+"_textarea").value) == "")
	{
		$(prefix+"_status").innerHTML = "<center><div><div>Comment cannot <br />be empty</div><div class='whiteButton' onclick='$(\""+prefix+"_status\").style.display=\"none\"'>Try again</div></div></center>";
		$(prefix+"_status").style.display = "";
		return;
	}	
	$(prefix+"_status").innerHTML = loadingMsg('Submitting comment');
	$(prefix+"_status").style.display = "";

        var req = new XMLHttpRequest();
        req.onreadystatechange = function()
        {            
            	if (req.readyState == 4) {
			$(prefix+"_html").innerHTML = req.responseText;
			$(prefix+"_status").innerHTML = '<center><div><img src="i/whitecheck.gif" style="width:32px;height:32px;"><br />Submitting comment</div></center>';
			setTimeout('$("'+prefix+'_status").style.display = "none"',1000);	
			setTimeout('$("'+prefix+'_input").style.display = "none"',1100);	
			setTimeout('$("'+prefix+'_button").style.display = ""',1100);	
			if ($("comments_"+id) && $("comments_"+id).getAttribute("selected") == "true") {
				refreshPage("review_"+id,"review.htm?review_id="+id,"");
				setTimeout('refreshCommentsPage('+id+')',1500);
			}
		}
        };

	var args = encodeForm($(prefix+"_form"));
	req.open("POST", "reviewcomment.htm", true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(args.join("&"));    
}

function submitCPhotos(id)
{
	positionMsgBox($("cphotos_status"));
	$("cphotos_status").innerHTML = loadingMsg('Updating community photos');
	$("cphotos_status").style.display = "";

        var req = new XMLHttpRequest();
        req.onreadystatechange = function()
        {            
            	if (req.readyState == 4) {
			$("cphotos_status").innerHTML = req.responseText;
			refreshReviewsItem(id,1,"");
			refreshPage("review_"+id,"review.htm?review_id="+id,"setTimeout('$(\"cphotos_status\").style.display = \"none\"',1000)");
		}
        };

	var args = encodeForm($("cphotos"));
	req.open("POST", "submitcphotos.htm", true);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(args.join("&"));    
}

function completeBookmarkReview(id,option)
{
	var prefix = "review_"+id;
	if (option == 1)
	{
		$(prefix+"_bookmark_button").style.display = "none !important";
		$(prefix+"_unbookmark_button").style.display = "";
		if ($(prefix+"_bookmark_name")) $(prefix+"_bookmark_name").setAttribute("bookmark","true");
		if ($(prefix+"_bookmark_title")) $(prefix+"_bookmark_title").setAttribute("bookmark","true");
	} else {
		$(prefix+"_bookmark_button").style.display = "";
		$(prefix+"_unbookmark_button").style.display = "none !important";
		if ($(prefix+"_bookmark_name")) $(prefix+"_bookmark_name").setAttribute("bookmark","false");
		if ($(prefix+"_bookmark_title")) $(prefix+"_bookmark_title").setAttribute("bookmark","false");
	}
	setTimeout('$("'+prefix+'_status").style.display = "none"', 100);
}

function bookmarkReview(id, option)
{
	var status = "review_"+id+"_status";
	
	positionMsgBox($(status));
	if (option == 1)                
		$(status).innerHTML = loadingMsg('Bookmarking review');
	else
		$(status).innerHTML = loadingMsg('Removing bookmark');
	$(status).style.display = "";
	updateStatus("reviewbookmark.htm?bookmark="+option+"&review_id="+id,"review_"+id+"_bookmark_html","completeBookmarkReview("+id+","+option+")",false);
}

function completeAddFriend(id)
{
	refreshPage("myfriends","myfriends.htm?","");
	if ($("searchfriends_user_"+id).style.backgroundImage != "") {
		if ($("searchfriends_user_"+id).getAttribute("state") == "add")
			$("searchfriends_user_"+id).style.backgroundImage = $("searchfriends_user_"+id).style.backgroundImage.replace(/blue_plus/,"red_minus");
		else
			$("searchfriends_user_"+id).style.backgroundImage = $("searchfriends_user_"+id).style.backgroundImage.replace(/red_minus/,"blue_plus");
	}
	if ($("searchfriends_user_"+id).getAttribute("state") == "add")
		$("searchfriends_user_"+id).setAttribute("state","del");
	else
		$("searchfriends_user_"+id).setAttribute("state","add");
	$("searchfriends_status").style.display = "none";
}

function addFriend(id)
{
	positionMsgBox($("searchfriends_status"))
	var action = "Adding";

	if ($("searchfriends_user_"+id).getAttribute("state") != "add") action = "Removing";
		
	$("searchfriends_status").innerHTML =  loadingMsg(action+' friend');
	$("searchfriends_status").style.display = "";

	updateStatus("addfriend.htm?user_id="+id+"&state="+$("searchfriends_user_"+id).getAttribute("state"),"searchfriends_status","completeAddFriend("+id+")", true);
}

function submitReviewForm(prefix)
{
	positionMsgBox($(prefix+"_status"));
	$(prefix+"_status").style.display = "";

}

function refreshReviewsItem(id, flag, post_code)
{
        var req = new XMLHttpRequest();
	var noreviews_html = '<div id="noreviews" title="No Reviews" class="noresults"><div><center><p /><img src="i/emptyPhotoAlbum.gif"><p /><b>No reviews available.</b></center></div></div>';

        req.onreadystatechange = function()
        {            
            	if (req.readyState == 4) {
			for (var i = 0; i < reviews.length; i++)
			{
				var obj_id = reviews[i]+"_"+id;
				if ($(obj_id))
					$(obj_id).innerHTML = req.responseText;
			}
			if (post_code != "") eval(post_code);
		}
        };

	if (flag == -1)
	{
		for (var i = 0; i < reviews.length; i++)
		{
			var obj_id = reviews[i]+"_"+id;
			if ($(obj_id)) {
				$(obj_id).parentNode.removeChild($(obj_id))
				var nodes = $(reviews[i]).childNodes;
				var found = false;
				for (var j = 0; j < nodes.length && !found; j++)
				{
					if (nodes[j].tagName && nodes[j].tagName.toLowerCase() == "li")
						found = true;
				}				
				if (!found) {
					$(reviews[i]).innerHTML = noreviews_html;
					$(reviews[i]).className = "noresults";
				}
			}
		}
		if (post_code != "") eval(post_code);
		return;
	}

        req.open("GET", "refreshreviewsitem.htm?id="+id, true);
        req.send(null);
}

reviews = new Array();

function $(obj) 
{
	return document.getElementById(obj);
}

function clearInviteEmails()
{
	for (var i = 1; i <= 5; i++)
		$("invite_email"+i).value = "";
}

function inviteFriends()
{
	var found = false;

	var url = "send_invites.htm?";
	for (var i = 1; i <= 5; i++)
	{
		if ($("invite_email"+i).value != "")
			found = true;
		url += "&invite_email"+i+"="+encodeURIComponent($("invite_email"+i).value);
	}
	if (!found)
	{
		alert("At least one email needs to be filled");
		return;
	}

        $("invite_friends_status").innerHTML = loadingMsg('Sending invites');
        positionMsgBox($("invite_friends_status"));
        setTimeout('$("invite_friends_status").style.display = ""',150);
        setTimeout('updateStatus("'+url+'","invite_friends_status","clearInviteEmails()", true)',1000);
}

window.onorientationchange=updateOrientation;

