/**
 * Controls (video, note, details, slide, ...) functions
 *
 * @author		  Nicolas Zanghi
 * @copyright     Copyright 2010, Nicolas Zanghi
 */

	function muteVideo() {
	  if(ytplayer)
		if (mute) {
			ytplayer.unMute();
			mute = false;
			$('mute').setAttribute('src', 'img/sound.png');
			$('mute').setAttribute('alt', 'mute');
		} else {
			ytplayer.mute();
			mute = true;
			$('mute').setAttribute('src', 'img/sound_mute.png');
			$('mute').setAttribute('alt', 'unmute');
		}
	}

	function muteRadio() {
		if (mute_radio) {
			radioSound.play();
			mute_radio = false;
			$('radio').setAttribute('src', 'img/radio_on.png');
			$('radio').setAttribute('alt', 'unmute radio');
		} else {
			radioSound.pause();
			mute_radio = true;
			$('radio').setAttribute('src', 'img/radio_off.png');
			$('radio').setAttribute('alt', 'mute radio');
		}
	}

	function btPlay() {
		// if is paused continue else play a random song
		if (ytplayer.getPlayerState() == '2' || ytplayer.getPlayerState() == '0') {
		  if (ytplayer)
			ytplayer.playVideo();
		} else {
			getRandomSong();
		}
		$('bt_play').style.display = 'none';
		$('bt_pause').style.display = 'inline-block';
	}

	function btPause() {
		//if (ytplayer.getPlayerState() == '1') {
		if (ytplayer) {
			ytplayer.pauseVideo();
			if (!mute_radio)
				radioSound.play();
		}
		//}
		$('bt_pause').style.display = 'none';
		$('bt_play').style.display = 'inline-block';

	}

	function btNext() {
		getRandomSong();
	}

	/**
	 * get history
	 */
	function btPrevious() {
		if (previous_song_id != undefined) {
			getOneSong(previous_song_id);
		}

	//	if ($('history_container').style.display == 'none')  {
			new Ajax.Updater('history', 'histories/get', {
				asynchronous:true,
				evalScripts:true,
				method:'post',
				onComplete: function() {
					if ($('history_container').style.display == 'none')  
						Effect.BlindDown('history_container');
				}
			  });
	//	}
	}

	function edAutoPlay() {
		if (!autoplay) {
			autoplay = true;
			$('autoplay').setAttribute('src', 'img/autoplay_on.png');
			$('autoplay').setAttribute('alt', 'enable autoplay');
			if (ytplayer.getPlayerState() != '1') // if is not play start player, if not continue to play the current song
				btPlay();
		} else {
			autoplay = false;
			$('autoplay').setAttribute('src', 'img/autoplay_off.png');
			$('autoplay').setAttribute('alt', 'disable autoplay');
		}
	}

	function setIconImage() {
		if (song_id != undefined)
			markers[song_id].setIcon(image);
	}

	function selectCountries(continent) {

		if (continent == 'asia')
			countries = new Array('AF','AM','AZ','BH','BD','BT','IO','BN','KH','CN','CX','CC','CY','GE','HK','IN','ID','IR','IQ','IL','JP','JO','KZ','KP','KR','KW','KG','LA','LB','MO','MY','MV','MN','MM','NP','OM','PK','PS','PH','QA','SA','SG','LK','SY','TW','TJ','TH','TL','TR','TM','AE','UZ','VN','YE');
		else if (continent == 'europe')
			countries = new Array('AX','AL','AD','AT','BY','BE','BA','BG','HR','CZ','DK','EE','FO','FI','FR','DE','GI','GR','GG','VA','HU','IS','IE','IM','IT','JE','LV','LI','LT','LU','MK','MT','MD','MC','ME','NL','NO','PL','PT','RO','RU','SM','RS','SK','SI','ES','SJ','SE','CH','UA','GB');
		else if (continent == 'north_america')
			countries = new Array('GL', 'CA', 'US');
		else if (continent == 'south_america')
			countries = new Array('AR','BO','BR','CL','CO','EC','FK','GF','GY','PY','PE','SR','UY','VE','AI','AG','AW','BS','BB','BZ','BM','VG','KY','CR','CU','DM','DO','SV','GD','GP','GT','HT','HN','JM','MQ','MX','MS','AN','NI','PA','PR','BL','KN','LC','MF','PM','VC','TT','TC','VI');
		else if (continent == 'oceania')
			countries = new Array('AS','AU','CK','FJ','PF','GU','KI','MH','FM','NR','NC','NZ','NU','NF','MP','PW','PG','PN','WS','SB','TK','TO','TV','UM','VU','WF');
		else if (continent == 'africa')
			countries = new Array('DZ','AO','BJ','BW','BF','BI','CM','CV','CF','TD','KM','CD','CG','CI','DJ','EG','GQ','ER','ET','GA','GM','GH','GN','GW','KE','LS','LR','LY','MG','MW','ML','MR','MU','YT','MA','MZ','NA','NE','NG','RE','RW','SH','ST','SN','SC','SL','SO','ZA','SD','SZ','TZ','TG','TN','UG','EH','ZM','ZW');
		else if (continent == 'antartica')
			countries = new Array('AQ','BV','TF','HM','GS');
		else
			return false;

		var form = document.optionsMapForm;
		var input = 'data[options][Country][]';

		// uncheck
		for (var i=0; i < form[input].length; i++)
		   if (form[input][i].checked)
			form[input][i].checked = false;

		// check
		for (i=0; i<countries.length; i++) {
		   if (form[input]['OptionsCountry'+countries[i]] != undefined)
			   form[input]['OptionsCountry'+countries[i]].checked = true;
		}

		return true;

	}

	function selectNoneCountries() {
		var form = document.optionsMapForm;
		var input = 'data[options][Country][]';

		// uncheck
		for (var i=0; i < form[input].length; i++)
		   if (form[input][i].checked)
			form[input][i].checked = false;
	}

	/**
	 * Favourite
	 */
	function addToFavourite() {
		$('FavouriteSongId').value = song_id;

		new Ajax.Request('favourites/add', {
			asynchronous: true,
			evalScripts: true,
			parameters: Form.serialize($('FavouriteAddForm')),
			onComplete: function(request, json) {
				$('favourite').innerHTML = 'added to your favourite';
				if ($('favourites_container').style.display != 'none')
					btFavourites('true');
			}
		});
	}

	function btFavourites(reload) {
		if (reload != undefined || $('favourites_container').style.display == 'none') {
			new Ajax.Updater('favourites', 'favourites/get', {
				asynchronous:true,
				evalScripts:true,
				method:'post',
				onComplete: function() {if ($('favourites_container').style.display == 'none') {Effect.BlindDown('favourites_container');}}
			  });
		} else {
			Effect.BlindUp('favourites_container');
		}
	}


	/**
	 * Report
	 */
	function reportSong() {

		$('SongSongId').value = song_id;

		new Ajax.Request('songs/report', {
			asynchronous: true,
			evalScripts: true,
			parameters: Form.serialize($('SongReportForm')),
			onComplete: function(request, json) {
				$('report').style.display = 'none';
				$('report_thx').style.display = 'inline';
			}
		});
	}


	/**
	 * Rate
	 */
	function showVoteRate() {
		$('rate').style.display = 'none';
		$('vote_rate').style.display = 'inline';
	}

	function maskVoteRate() {
		$('vote_rate').style.display = 'none';
		$('rate').style.display = 'inline';
	}

	function voteRate(r) {

		$('RateRate').value = r;

		new Ajax.Request('rates/add', {
			asynchronous: true,
			evalScripts: true,
			parameters: Form.serialize($('RateAddForm')),
			onComplete: function() {
				$('vote_rate').innerHTML = "Thank's";
				$('rate').innerHTML = "Thank's";
				$('rate_count').innerHTML = '';
			}
		});

	}

	function voteRateOver(r) {
		for (var i=1;i<=5;i++) {
			if (i<=r)
				$('star_'+i).setAttribute('src', 'img/star.png');
			else
				$('star_'+i).setAttribute('src', 'img/star_bw.png');
		}
	}


	/**
	 * slide down element in header menu
	 */
	function slide(id) {
		var cb = new Array('genre', 'type', 'year', 'country');
		Effect.toggle('checkbox_'+id, 'slide', {
			beforeStart : function () {
				for (var i=0;i<cb.length; i++) {
					if ($('checkbox_'+cb[i]).style.display != 'none') {
						$('checkbox_'+cb[i]).style.display = 'none';
						$('li_'+cb[i]).setAttribute('class', 'slide_down');
					}
				}
			},
			afterFinish : function () {
				if ($('li_'+id).className == 'slide_down')
					$('li_'+id).setAttribute('class', 'slide_up');
				else
					$('li_'+id).setAttribute('class', 'slide_down');
			}
		});
		return false;
	}


	/**
	 * blindDown only if is not already down
	 */
	function blindDown(id) {
		if ($(id).style.display == 'none')
			Effect.BlindDown(id);
	}

	function blindDownLogin(id) {
		if ($(id).style.display == 'none')
			Effect.BlindDown(id, {afterFinish:function(){$('UserEmailAddress').focus();}});
	}

	/**
	 * blindDown and load addSong map after blindedDown (otherwise google map bug)
	 */
	function blindDownAddSong(id) {
		if ($(id).style.display == 'none')
			Effect.BlindDown(id, {afterFinish:function(){loadAddSong();}});
		else
			loadAddSong();
	}



	/**
	 * show caption div
	 */
	function caption(id, text) {

		var div = document.createElement('div');
		var txt = document.createTextNode(text);
		div.appendChild(txt);
		div.setAttribute('class', 'caption');
//		div.setAttribute('style', 'display:none');

		$('container').appendChild(div);

		Event.observe(id, 'mouseover', function() {div.style.display = 'block'; div.style.top = getMousePosition().y-30; div.style.left = getMousePosition().x;} );
		Event.observe(id, 'mouseout', function() {div.style.display = 'none';} );

	}

	function getMousePosition(e) {
		e = e || window.event;
		var cursor = {x:0, y:0};
		if (e.pageX || e.pageY) {
			cursor.x = e.pageX;
			cursor.y = e.pageY;
		}
		else {
			cursor.x = e.clientX +
				(document.documentElement.scrollLeft ||
				document.body.scrollLeft) -
				document.documentElement.clientLeft;
			cursor.y = e.clientY +
				(document.documentElement.scrollTop ||
				document.body.scrollTop) -
				document.documentElement.clientTop;
		}
		return cursor;
	}


	function playSimilar(genre, type, year) {

		// uncheck
		var form = document.optionsMapForm;
		for (i = 0; i < form.length; i++)
			form[i].checked = false ;

		// check genre, type and year
		$('OptionsGenre'+genre).checked = true;
		$('OptionsType'+type).checked = true;
		$('OptionsYear'+year).checked = true;

		btNext();
	}

