String.prototype.gsub = function(pattern, replacement)
{
    var result = '', source = this, match;

    while (source.length > 0) {
      if (match = source.match(pattern)) {
        result += source.slice(0, match.index);
        result += replacement;
        source  = source.slice(match.index + match[0].length);
      } else {
        result += source, source = '';
      }
    }
    return result;
}


function UpdateRecommendedPlaces()
{
	new Ajax.Request(
		'/homepage/RecommendedPlaces',
		{
			method: 'get',
			onComplete: CallbackRecommendedPlaces
		});

	function CallbackRecommendedPlaces(req)
	{
		$("recommend_places").innerHTML = req.responseText;
	}
}


// workaround for safari issue with file submits from modals
function AddPhoto()
{
	$('#add_photo_step1').hide();
	$('#add_photo_step2').show();
}

function AddWallpaper()
{
	$('#add_wallpaper_step1').hide();
	$('#add_wallpaper_step2').show();
}

var onceCleaned_tpmembers = false;
var onceCleaned_emails = false;

function ShareReviewOpen(elem, url)
{
	onceCleaned_tpmembers = false;
	onceCleaned_emails = false;

//  TODO: redo autocompleter for usernames, init it on eval:

	return Dialog.open(elem, { center: true, title: 'Share review', src: url } );
}

function ShareReviewInterface(elem)
{
	elem = $(elem).get(0);
	if (elem.id == 'tpmembers')
	{
		if (!onceCleaned_tpmembers)
		{
			onceCleaned_tpmembers = true;
			elem.value  = "";
		}
		members = elem.value.gsub(/\s/,',');
		members = members.gsub(/,+/,',');
		members = members.toLowerCase();

		friendsArr = document.getElementsByName('friend');
		for (i=0; i<friendsArr.length; i++)
		{
			friendname = friendsArr[i].id.split('_-_')[2];
			if (members.indexOf( friendname.toLowerCase() ) != -1) {
				friendsArr[i].checked = true;
			}
			else
				friendsArr[i].checked = false;
		}
	}
	else if (elem.id == 'emails')
	{
		if (!onceCleaned_emails)
		{
			onceCleaned_emails = true;
			elem.value  = "";
		}
	}
	else
	{
		if (!onceCleaned_tpmembers)
		{
			onceCleaned_tpmembers = true;
			$('#tpmembers').val('');
		}
		friendname = elem.id.split('_-_')[2];
		if (elem.checked)
		{
			if($('#tpmembers').val() != "")
				$('#tpmembers').val($('#tpmembers').val() + ', ')

			$('#tpmembers').val($('#tpmembers').val() + friendname);
		}
		else
		{
			x = new RegExp(friendname + "[\s,]*", "i");
			$('#tpmembers').val($('#tpmembers').val().gsub(x,''));
		}
	}
}

function ShareReviewPost(memberid, reviewid)
{
	ShareReviewInterface('#tpmembers');
	ShareReviewInterface('#emails');

	$("#ShareReviewMessage").hide();

	$("#ShareReviewMessage").html("<div style='text-align: center; height: 40px; padding: 20px 0 20px 0'><img src='/img/indicator.green.gif'/><br /> Sending...</div>");
	$.post('/my/sharereview/' + memberid + '/' + reviewid + '/send?' + $('#ShareReview').serialize(), function(data){
		if(data.indexOf("_") == 0)
		{
			Dialog.close();

			$('#anouncement_body').html('Thanks for sharing. Your review has been sent to your friends.');
			$('#anouncement').show();
			$("<div id='thank_you'>Your review has been sent to your friends.</div>").appendTo('body');
			Dialog.open(null, { local: 'thank_you', title: 'Thanks for sharing', center: true });
		}
		else
		{
			$("#ShareReviewMessage").html(data);
			$("#ShareReviewMessage").show();
		}
	});
}


var gPlaceName = '';
var onceCleaned_email = false;

function SubscribeInterface()
{
	if (!onceCleaned_emails)
		{
			onceCleaned_emails = true;
			$('email').value  = "";
		}
}


function SubscribePost(type, placeid, placename, email)
{
	gPlaceName = placename;

	$("SubscribeMessage").innerHTML = "<div style='text-align: center; height: 40px; padding: 20px 0 20px 0'><img src='/img/indicator.green.gif'/><br /> Sending...</div>";
	$("SubscribeMessage").show();
	new Ajax.Request(
		'/subscriptions/subscribedo/'+ type +'/' + placeid,
		{
			method: 'post',
			parameters: $('Subscribe').serialize(),
			onComplete:  SubscribeComplete
		}
	);
}

function  SubscribeComplete(req)
{
	if (req.responseText.indexOf("_") == 0)
	{
		Dialog.close();
		if (req.responseText.indexOf("/") == 1)
		{
			window.location = req.responseText.substr(1, req.responseText.length - 1);
		}
		else
		{
			$('special_offer_subscription_div').hide();
			$('anouncement_body').innerHTML = 'Thanks for subscribing. We will let you know as soon as we receive special offers from ' + gPlaceName;
			$('anouncement').show();
		}
	}
	else
	{
		$("SubscribeMessage").innerHTML = req.responseText;
		$("SubscribeMessage").show();
	}
}
