var base_url = '';
var userUrlSetted = false;

var setBottom = function(from)
{
	var from = (from == undefined || from == '') ? 'front' : from;
	
	var ajustors = new Array();
	ajustors['front'] = Prototype.Browser.IE ? -26 : 4;
	ajustors['private'] = 21+120;
	ajustors['style'] = -26;
	
	var margin_top = $('container-content-body').getStyle('margin-top');
	margin_top = margin_top.substring(1,margin_top.length-2);
	
	//Body Footer
	var content = $('container-content-body').getHeight()-margin_top;
	var content_height = content+(120-(content%120))+ajustors[from];
	
	//Border left ++ right	
	var header = $('container-header').getHeight();
	var menu = $('container-menu').getHeight();
	var footer = $('container-footer').getHeight();
	
	setTimeout(function() { $('container-content').setStyle({'height': content_height+'px'}); }, 150);
	
}

var autoUserUrl  = function()
{
	if (!userUrlSetted)
	{
		var elmt = $('user-url');
		var nickname = sanitize($F('user-nickname'));
		
		var url = nickname.replace(/[^a-z0-9_\.-]/gi, '');
		
		elmt.value = url.toLowerCase();
		
		checkUserUrl();
	}
}

var checkUserEmail = function()
{
	var state = $F('user-email').strip().match(/^([a-z0-9+_\.-]+)@([a-z0-9]+)(([\.\-]?[a-z0-9]+)*)\.([a-z]{2,6})$/i);
	toggleError('user-email', state, 'INCORRECT');
}

var checkUserPassword = function ()
{
	var state = $F('user-password').strip().match(/^[a-z0-9]{4,20}$/i);
	toggleError('user-password', state, 'INCORRECT');
	
	if (state) {
	  var state = $F('user-password-check').strip().match(/^[a-z0-9]{4,20}$/i);
	  toggleError('user-password-check', state, 'INCORRECT');
	}
}

var checkUserUrl = function()
{
	var state = $F('user-url').strip().match(/^[a-z0-9_-]{3,101}$/);
	toggleError('user-url', state, 'INCORRECT');
}

var uploadStart = function(id, fileObj, bytesLoaded)
{
	$(id+'_progressbar').show();
	eval(id+'_progressbar_var').start();
}

var uploadProgress = function(id, fileObj, bytesLoaded)
{
	var percent = Math.ceil((bytesLoaded / fileObj.size) * 100);
	
	eval(id+'_progressbar_var').setProgress(percent);
	
	if (percent < 10) {
	  percent = '0'+percent;
	}
	
	$(id+'-output').update(percent+'%');
}

var uploadCompleteMedia = function(id, fileObj)
{
	$(id+'_progressbar').hide();
	$(id+'-output').update();
	
	listMedias();
}

var uploadCompletePhoto = function(id, fileObj)
{
	$(id+'_progressbar').hide();
	$(id+'-output').update();
	
	getUserPhoto();
}

var displayPopup = function(link)
{
	var link = link ? $(link) : document.createElement('a');
	
	var modal = new Control.Modal(link, {
		width: 800,
		opacity: 0.7,
		zIndex: 9996
	});
	
	modal.open();
	
	return false;
}

var displayUrlInPopup = function(url)
{
	var link = document.createElement('a');
	link.href = url;
	
	var modal = new Control.Modal(link, {
		width: 800,
		opacity: 0.7,
		zIndex: 9996
	});
	
	modal.open();
	
	return false;
}

var displayMediaDescription = function(link, id)
{
	var link = link ? $(link) : document.createElement('a');
	
	link.href = base_url+'/users/medias/aj_description.php';
	
	var modal = new Control.Modal(link, {
		width: 800,
		opacity: 0.7,
		zIndex: 9996,
		requestOptions: {method: 'post', postBody:'id='+(id ? id : '')}
	});
	
	link.href = '#';
	
	modal.open();
	
	return false;
}

var displayInformation = function(id)
{
	var link = document.createElement('a');
	
	link.href = base_url+'/popup/aj_information.php?id='+id;
	var modal = new Control.Modal(link, {
		width: 800,
		opacity: 0.7,
		zIndex: 9996
	});
	
	link.href = '#';
	
	modal.open();
	
	return false;
}

var listMessages = function(filter)
{
	new Ajax.Updater('message-list', base_url+'/users/messages/aj_list.php', {evalScripts:true, method:'post', parameters:{'filter':filter}});
	
	return false;
}

var listMedias = function()
{
	new Ajax.Updater('media-list', base_url+'/users/medias/aj_list.php', {evalScripts:true});
	
	return false;
}

var focusMedia = function(id) {
  	new Ajax.Request(base_url+'/users/medias/aj_focus_a.php', {method:'post', parameters:{id:id}});
	
	return false;
}

var changeMediaPosition = function(id, direction)
{
	new Ajax.Request(base_url+'/users/medias/aj_position_a.php', {
		method:'post', 
		postBody:'id='+id+'&direction='+direction
	});
		
	return false;
}

var privatePlaylist = function()
{
	new Ajax.Updater('private-playlist', base_url+'/users/playlist/aj_list.php', {evalScripts:true});
	
	return false;
}

var hideMedia = function(id, text) {
  if (window.confirm(text)) {
	  new Ajax.Request(base_url+'/users/medias/aj_hide_a.php', {method:'post', parameters:{id:id}});
	}
	
	return false;
}

var getUserPhoto = function()
{
	
	new Ajax.Updater('user-photo', base_url+'/users/datas/aj_photo.php', {evalScripts:true});

	return false;
}

var removeUserPhoto = function(text)
{
	if (window.confirm(text)) {
	  new Ajax.Request(base_url+'/users/datas/aj_photo_remove_a.php');
	}
	
	return false;
}

var getUserBankable = function()
{
	new Ajax.Updater('user-bankable', base_url+'/users/dashboard/aj_bankable.php', {evalScripts:true});
	
	return false;
}

var setUserBankable = function(text)
{
	if (window.confirm(text)) {
	  new Ajax.Request(base_url+'/users/dashboard/aj_bankable_a.php');
	}
	
	return false;
}

var setSubstyleCombo = function(style_id, substyle_id)
{
	new Ajax.Request(base_url+'/users/datas/aj_substyle.php', {method:'post', postBody:'style_id='+style_id+'&substyle_id='+substyle_id});
	
	return false;
}

var deleteMessage = function(id, text)
{
	if (window.confirm(text)) {
	  new Ajax.Request(base_url+'/users/messages/aj_delete_a.php', {method:'post', postBody:'id='+id});
	}
	
	return false;
}

var askToBeFriend = function(url, text)
{
	new Ajax.Request(base_url+'/is_logged.php', {
		onSuccess: function() {
			if (window.confirm(text)) {
			  new Ajax.Request(base_url+'/users/friends/aj_create_a.php', {method:'post', postBody:'url='+url});
			}
		},
		
		onFailure: function() {
			displayUrlInPopup(base_url+'/users/aj_login.php');
		}
	});
		
	return false;
}

var investOn = function(id)
{
	new Ajax.Request(base_url+'/is_logged.php', {
		onSuccess: function() {
			window.location = base_url+'/users/investments/investment.php?id='+id;
		},
		
		onFailure: function() {
			displayUrlInPopup(base_url+'/users/aj_login.php');
		}
	});
		
	return false;
}

var purchaseOn = function(id,media_id,user_id)
{
	new Ajax.Request(base_url+'/is_logged.php', {
		onSuccess: function() {
			window.location = base_url+'/users/purchase/investment.php?id='+id+'&media_id='+media_id+'&user_id='+user_id;
		},
		
		onFailure: function() {
			//displayUrlInPopup(base_url+'/users/aj_login.php');
			window.location = base_url+'/users/purchase/investment.php?id='+id+'&media_id='+media_id+'&user_id='+user_id;
		}
	});
		
	return false;
}

var postComment = function(url)
{
	new Ajax.Request(base_url+'/is_logged.php', {
		onSuccess: function() {
			displayUrlInPopup(base_url+'/users/aj_comment_create.php?url='+url);
		},
		
		onFailure: function() {
			displayUrlInPopup(base_url+'/users/aj_login.php');
		}
	});
	
	return false;
}

var sendMessage = function(url)
{
	new Ajax.Request(base_url+'/is_logged.php', {
		onSuccess: function() {
			  displayUrlInPopup(base_url+'/users/messages/aj_create.php?url='+url);
		},
		
		onFailure: function() {
			displayUrlInPopup(base_url+'/users/aj_login.php');
		}
	});
		
	return false;
}

var acceptFriend = function(url, accepted, text)
{
	if (window.confirm(text)) {
	  new Ajax.Request(base_url+'/users/friends/aj_update_a.php', {method:'post', postBody:'url='+url+'&accepted='+(accepted ? 1 : 0)});
	}
	
	return false;
}

var getBanner = function(url)
{
	var elmt = $('artist-content-third');
	new Ajax.Updater(elmt, base_url+'/users/promotions/aj_banner.php', {evalScripts:true, method:'post', parameters:{'url':url}, 
		onSuccess: function(){
			elmt.show();
			setTimeout(function() { new Effect.ScrollTo(elmt); }, 100);
		}
	});
		
	return false;
}


var getPrivateBanner = function(url)
{
	var elmt = $('private-content-third');
	new Ajax.Updater(elmt, base_url+'/users/promotions/aj_banner.php', {evalScripts:true, method:'post', parameters:{'url':url}, 
		onSuccess: function(){
			elmt.show();
			setTimeout(function() { setBottom('private');new Effect.ScrollTo(elmt); }, 100);
		}
	});
		
	return false;
}

var toggleRepeatSong = function(elmt)
{
	var elmt = $(elmt);
	if(repeatSong)
	{
		repeatSong = false;
		elmt.update('<img src="'+base_url+'/images/front/repeat_off.gif" alt="" />');
	}
	else
	{
		repeatSong = true;
		elmt.update('<img src="'+base_url+'/images/front/repeat_on.gif" alt="" />');
	}
	
	return false;
}

var repeatCurrentSong = function(pid)
{
	$(pid).sendEvent('stop');
	$(pid).sendEvent('scrub', 0);
	$(pid).sendEvent('playpause');
}

var getArtistPreview = function(url, onload)
{
	if($('js_mp3player_front'))
		$('js_mp3player_front').sendEvent('stop');
	
	//if($('js_mp3player_front_concert'))
		//$('js_mp3player_front_concert').sendEvent('stop');
	
	new Ajax.Updater('home-artist-preview', base_url+'/users/aj_preview_artist.php', {evalScripts:true, method:'post', parameters:{'url':url}});
	
	if (onload != true) {
	  new Effect.ScrollTo('container-menu');
	}
	
	return false;
}

var getArtistPreview2 = function(url, onload)
{
	//if($('js_mp3player_front_concert'))
		//$('js_mp3player_front_concert').sendEvent('stop');
		
		//if($('js_mp3player_front'))
		//$('js_mp3player_front').sendEvent('stop');
	
	new Ajax.Updater('home-artist-preview_concert', base_url+'/users/aj_preview_artist_concert.php', {evalScripts:true, method:'post', parameters:{'url':url}});
	
	
	if (onload != true) {
	  //new Effect.ScrollTo('container-menu');
	}
	
	return false;
}

var getFanPreview = function(url, onload)
{
	new Ajax.Updater('home-fan-preview', base_url+'/users/aj_preview_fan.php', {evalScripts:true, method:'post', parameters:{'url':url}});
	
	if (onload != true) {
	  new Effect.ScrollTo('container-content');
	}
	
	return false;
}

var setArtistPlaylistOnair = function(checksum)
{
	$('artist-playlist').select('a[class~="onair"]').first().removeClassName('onair');
	$('playlist-media-'+checksum).addClassName('onair');
}

var getArtistSound = function(checksum, credential)
{
	$('artist-animation').show();
	
	if($('artist-flvplayer').getStyle('visibility') != 'hidden')
	{
		$('js_flvplayer_front').sendEvent('stop');
		$('artist-flvplayer').setStyle({'visibility':'hidden'});
	}
		
	$('js_mp3player_front').loadFile({file:encodeURIComponent(base_url+'/stream_a.php?file='+checksum+'&credential='+credential)});
	setTimeout(function() { 
		$('js_mp3player_front').sendEvent('playpause') 
	}, 150);
	
	setArtistPlaylistOnair(checksum);
	
	return false;
}

var getArtistVideo = function(checksum, credential)
{
	$('artist-animation').hide();		
	$('artist-flvplayer').setStyle({'visibility':'visible'});
	
	$('js_mp3player_front').sendEvent('stop');
	
	setTimeout(function() { 
		$('js_flvplayer_front').loadFile({file:encodeURIComponent(base_url+'/stream_a.php?file='+checksum+'&credential='+credential)});
		$('js_flvplayer_front').sendEvent('playpause')
	 }, 150);
	
	setArtistPlaylistOnair(checksum);
	
	return false;
}

var getArtisteNextMedia = function(credential)
{
	var medias = $('artist-playlist').select('a[id^="playlist-media-"]');
	
	for(var i=0; i<medias.length; i++)
	{
		if(medias[i].hasClassName('onair'))
			var currentMedia = i;
	}
	
	var nextMedia = medias.first();
	if((currentMedia+1) < medias.length)
	{
		nextMedia = medias[(currentMedia+1)];
	}
	
	var nextChecksum = nextMedia.id.match(/-(\w+)$/)[1];
	
	if(nextMedia.hasClassName('video'))
	{
		getArtistVideo(nextChecksum, credential);
	}else{
		getArtistSound(nextChecksum, credential);
	}
}

var getFanMedia = function(checksum, id)
{
	new Ajax.Updater('fan-players', base_url+'/users/aj_fan_player.php', {evalScripts:true, method:'post', parameters:{'checksum':checksum, 'id':id}, 
		onSuccess: function() {
			$('fan-playlist').select('a[class~="onair"]').first().removeClassName('onair');
			$('playlist-media-'+checksum).addClassName('onair');
		}	
	});
		
	return false;
}

var getFanNextMedia = function(id)
{
	var medias = $('fan-playlist').select('a[id^="playlist-media-"]');
	
	for(var i=0; i<medias.length; i++)
	{
		if(medias[i].hasClassName('onair'))
			var currentMedia = i;
	}
	
	var nextMedia = medias.first();
	if((currentMedia+1) < medias.length)
	{
		nextMedia = medias[(currentMedia+1)];
	}
	
	togglePage(Math.floor((currentMedia+1)/8));
	
	var nextChecksum = nextMedia.id.match(/-(\w+)$/)[1];
	getFanMedia(nextChecksum, id);
}

var getWebtvMedia = function()
{
	new Ajax.Updater('webtv-content', base_url+'/aj_webtv.php', {evalScripts:true});
		
	return false;
}

var getPrivateMedia = function(checksum)
{
	new Ajax.Updater('private-players', base_url+'/users/aj_private_player.php', {evalScripts:true, method:'post', parameters:{'checksum':checksum}, 
		onSuccess: function() {
			$('private-playlist').select('a[class~="onair"]').first().removeClassName('onair');
			$('playlist-media-'+checksum).addClassName('onair');
		}	
	});
		
	return false;
}

var getPrivateNextMedia = function()
{
	var medias = $('private-playlist').select('a[id^="playlist-media-"]');
	
	for(var i=0; i<medias.length; i++)
	{
		if(medias[i].hasClassName('onair'))
			var currentMedia = i;
	}
	
	var nextMedia = medias.first();
	if((currentMedia+1) < medias.length)
	{
		nextMedia = medias[(currentMedia+1)];
	}
	
	togglePage(Math.floor((currentMedia+1)/8));
	
	var nextChecksum = nextMedia.id.match(/-(\w+)$/)[1];
	getPrivateMedia(nextChecksum);
}

var switchMixtePlayerState = function(state)
{
	if(state == 'off')
	{
		$('mixteplayer-box').setStyle({'visibility':'hidden'});
		
		if(playerMixteCurrentState != 0)
			$('js_mixteplayer_private').sendEvent('playpause');
		
	}
	else if(state == 'on' && playerMixteCurrentState == 0)
	{
		$('mixteplayer-box').setStyle({'visibility':'visible'});
	}
}


var addToPlaylist = function(checksum)
{
	new Ajax.Request(base_url+'/is_logged.php', {
		onSuccess: function() {
			new Ajax.Request(base_url+'/users/playlist/aj_add_a.php', {method:'post', postBody:'checksum='+checksum});
		},
		
		onFailure: function() {
			displayUrlInPopup(base_url+'/users/aj_login.php');
		}
	});
		
	return false;
}

var removeFromPlaylist = function(checksum, text)
{
	if (window.confirm(text)) {
		  new Ajax.Request(base_url+'/users/playlist/aj_del_a.php', {method:'post', postBody:'checksum='+checksum});
	}

	return false;
}

var getMoreContent = function(id, controller)
{
	var elmt = $('artist-content-third');
	
	if (!elmt) {
	  elmt = $('fan-content-third');
	}
	
	new Ajax.Updater(elmt, base_url+'/users/aj_more.php', {evalScripts:true, method:'post', parameters:{'controller':controller, 'id':id}, 
		onSuccess: function(){
		  elmt.show();
		  setTimeout(function() { new Effect.ScrollTo(elmt); }, 100);
		} 
	});
	
	return false;
}

var getPrivateContent = function(tab)
{
	new Ajax.Updater('container-content-body', base_url+'/users/'+tab+'/aj_index.php', {evalScripts:true});
	new Ajax.Updater('blue-box', base_url+'/users/aj_private_blue_box.php', {evalScripts:true, method:'post', parameters:{'controller':tab}});
	
	return false;
}

var getPrivateMoreContent = function(controller)
{
	var elmt = $('private-content-third');
	
	new Ajax.Updater(elmt, base_url+'/users/aj_private_more.php', {evalScripts:true, method:'post', parameters:{'controller':controller}, 
		onSuccess: function(){
			elmt.show();
			setTimeout(function() { setBottom('private');new Effect.ScrollTo(elmt); }, 100);
		} 
	});
	
	return false;
}

var slideNews = function(place)
{
	var place = place ? place : 'home';
  	var visible_link = $('home-news-box').select('a').find(function (elmt) { return elmt.visible() });
    if(visible_link)
    {
	  var next_link = visible_link.next() ? visible_link.next() : $('home-news-box').select('a').first();
  	  
	  if(place == 'home-tribe')
	  {
		next_link.setStyle({
			position: 'absolute',
			top: '698px',
			left: '-10px'
		});
		
		Effect.Fade(visible_link, {duration: 1.5});
	    Effect.Appear(next_link, {duration: 2});

		var sliding = new Effect.Move(visible_link, {x: 600, mode: 'relative', duration: 2});
		var slidingNext = new Effect.Move(next_link, {x: 60, mode: 'relative'});
	  }
	  else
	  {
		next_link.setStyle({
			position: 'absolute',
			left: '-150px'
		});
		
		Effect.Fade(visible_link, {duration: 1.5});
		Effect.Appear(next_link, {duration: 2});

		var sliding = new Effect.Move(visible_link, {x: 600, mode: 'relative', duration: 2});
		var slidingNext = new Effect.Move(next_link, {x: 150, mode: 'relative'});
	  }
	 
    }	
}

var sanitize = function(str)
{
	str = str.replace(/[ÀÁÂÃÄÅ]/g, 'A');
	str = str.replace(/[àáâãäå]/g, 'a');
	str = str.replace(/[ÒÓÔÕÖØ]/g, 'O');
	str = str.replace(/[òóôõöø]/g, 'o');
	str = str.replace(/[ÈÉÊË]/g, 'E');
	str = str.replace(/[èéêë]/g, 'e'); 
	str = str.replace(/[ÌÍÎÏ]/g, 'I');
	str = str.replace(/[ìíîï]/g, 'i');
	str = str.replace(/[ÙÚÛÜ]/g, 'U');
	str = str.replace(/[ùúûü]/g, 'u');
	str = str.replace(/ÿ/g, 'y');
	str = str.replace(/Ñ/g, 'N');
	str = str.replace(/ñ/g, 'n');
	str = str.replace(/[^a-z0-9_.-]/i, '');
	
	return str;
}

var toggleError = function (elmt, state, msg)
{
	var error = $(elmt).next('span.error');
	
	if (state) {
	  error.hide();
	}
	else {
	  error.update(msg).show();
	}
}

var displayErrors = function(errors, container)
{
	var elmt = container ? $(container) : $("alerts");
	//elmt.setOpacity(0.7);
	
	elmt.scrollTo();
	elmt.update(errors);
	
	var element = $('alert-errors');
	element.setStyle({
		position: 'relative',
		width: '800px',
		margin: 'auto'
	});
	
	var dimensions = element.getDimensions();
	Position.prepare();
	//var offset_left = (Position.deltaX + Math.floor((Control.Modal.getWindowWidth() - dimensions.width) / 2));
	var offset_top = (Position.deltaY + ((Control.Modal.getWindowHeight() > dimensions.height) ? Math.floor((Control.Modal.getWindowHeight() - dimensions.height) / 2) : 0));	
	element.setStyle({
		//left: ((dimensions.width <= Control.Modal.getDocumentWidth()) ? ((offset_left != null && offset_left > 0) ? offset_left : '0') + 'px' : 0),
		top: ((dimensions.height <= Control.Modal.getDocumentHeight()) ? ((offset_top != null && offset_top > 0) ? offset_top : '0') + 'px' : 0)
		
	});
	
	elmt.observe('mouseover', function() { elmt.setStyle({cursor:'pointer'}); });
	elmt.observe('click', function() { new Effect.Fade(elmt); });
	new Effect.Appear(elmt);
}

var displayInfos = function(infos, container)
{
	/*var elmt = container ? $(container) : $("alerts");
	elmt.scrollTo();
	elmt.update(infos);
	new Effect.Appear(elmt);
	setTimeout(function() { new Effect.Fade(elmt); }, 4000);*/
	
	var modal = new Control.Modal(false, {
		contents: infos,
		width: 800,
		opacity: 0.7,
		zIndex: 9996
	});
	
	modal.open();
}
