//need json_by_ajax.js, fade.js
var TrackSeller = function(trackHtmlTemplate) {
	var saleManagerUrl = "/salemanager.php";
	var buyTrackActionName = 'buyTrack';
	var buyAlbumActionName = 'buyAlbum';
	var connectionProblemMessage = "Internet connection problem.";
	var me = this;
	//PUBLIC
	me.getPaidTrackHtmlCode = function (trackDownloadUrl)
	{
		return trackHtmlTemplate.replace(/#trackDownloadUrl#/, trackDownloadUrl);
	}
	//PUBLIC
	me.buyTrack = function(trackId, trackPrice) {
		var callback = function(result, status) { // http 200 is good status
			if (result == null) {
				alert(connectionProblemMessage);
				return;
			}
			var trackDownloadUrl = result.trackDownloadUrl;
			if (trackDownloadUrl) {
				onTrackBuyed(trackId, trackDownloadUrl, trackPrice);
			} else {
				onServerErrorDescription(result.errorDescription);
			}
		};
		new JsonByAjax(
			saleManagerUrl,
			callback,
			{action:buyTrackActionName, trackId:trackId}
		);
	};
	
	var onTrackBuyed = function(trackId, trackDownloadUrl, trackPrice) {
		var trackHtmlContainer = document.getElementById('track_html_container_'+trackId);
		trackHtmlContainer.innerHTML = me.getPaidTrackHtmlCode(trackDownloadUrl);
		
		var userBalanceContainer = document.getElementById('user_balance');
		var oldUserBalance = parseFloat(userBalanceContainer.innerHTML);
		userBalanceContainer.innerHTML = getFormattedMoneyString(oldUserBalance - trackPrice);
	};
	
	var getFormattedMoneyString = function(floatNumber)
	{
		var resultStr = ''+Math.round(floatNumber*100);
		while(resultStr.length<3) {
			resultStr = '0'+resultStr;
		}
		var first = resultStr.substr(0, resultStr.length-2);
		var second = resultStr.substr(resultStr.length-2);

		if (second.charAt(1) == '0') second = second.charAt(0);
		if (second == '0') second = '';
		else second = "."+second;

		return first+second;
	};
	
	var onServerErrorDescription = function(errorDescription){
		if (errorDescription.indexOf('authorize')>=0) {
			FadeFunctionInit();
		} else {
			alert(errorDescription);
		}
	};
}