var slider_login_state=0;

function fb_post_charts(title,link_url,songs,charts) {
	
	artists = '';	
	var images = Array();
	k=0;
	for (i=0; i<charts.length && i < 10;i++) {		
		if (artists != '') artists += '';
		artists += (i+1)+'. '+songs[charts[i]]['artist']+' - '+songs[charts[i]]['title']+'&nbsp;&nbsp;<a href="'+link_url+'?t='+(i+1)+'" target=_"blank">&raquo; Watch Video!</a><br/>';
		duplicate = false;
		for (j=0;j<images.length;j++) {
			if (images[j]['src']==songs[charts[i]]['img'])
				duplicate = true;
		}
		if (!duplicate && songs[charts[i]]['img']!='' && songs[charts[i]]['img']!=null) {
			images[k] = {'src':songs[charts[i]]['img'],'href':link_url};
			k++;
		}
	}
	
	artists = '<a target="_blank" href="'+link_url+'">'+link_url+'</a><br/><br/>' + artists;
	
	$('video_embed').style.display = 'none';
  var template_data = {"charts":title,                      
                      "images":images
                      };
  FB.Connect.showFeedDialog('88283207614', template_data, null, artists, null, FB.RequireConnect.promptConnect, fb_post_charts_after, 
                            'Post Charts to Facebook', null);
	
}

function fb_post_charts_after() {
	$('video_embed').style.display = 'block';
}

function fb_connect() {
	document.location.href='/facebook/connect'
}

function switch_feedback() {
	if ($('feedback').style.left == '0px')
		$('feedback').style.left = '-10px';
	else
		$('feedback').style.left = '0px';
}


function switch_tab(tab) {
	var tabs = Array('biography','lyrics','onair','discography');
	for(i=0;i<tabs.length;i++) {
		if (tabs[i] != tab) {
			$('tab_'+tabs[i]).style.display='none';
			$('button_'+tabs[i]).className = '';
		}
	}
	$('tab_'+tab).style.display='block';
	$('button_'+tab).className = 'active';
}

function slider() {

	if (slider_login_state==0) {
		new Effect.Morph($('slider'), { style:{ top:'0px' } , afterFinish: 
		function () { 
			slider_login_state=1;						
		}
	 });		
	} else {
		new Effect.Morph($('slider'), { style:{ top:'-69px' } , afterFinish: 
		function () { 
			slider_login_state=0;						
		}
	 });		
	}	
}

function save_chart() {
	if ($('box_save_title').value != 'Chart-Title...') {
		from = $('StationFrom').value+$('StationFrom-mm').value+$('StationFrom-dd').value;
		to = $('StationTo').value+$('StationTo-mm').value+$('StationTo-dd').value;
		params = 'data[Chart][position_list]='+position_list+'&data[Chart][station_list]='+station_list+'&data[Chart][chart_list]='+chart_list+'&data[Chart][title]='+encodeURIComponent($('box_save_title').value)+'&data[Chart][stations]='+encodeURIComponent($('StationStations').value)+'&data[Chart][genres]='+encodeURIComponent($('StationGenres').value)+'&data[Chart][from]='+from+'&data[Chart][to]='+to+'&data[Chart][results]='+$('StationResults').value+'&data[Chart][data]='+$('StationData').value+'&data[Station][artist_id]='+$('StationArtist').value+'&data[Chart][artists]='+encodeURIComponent($('StationArtistKeyword').value);
		request_post('/charts/save',params,'get_save_response');		
	} else {
		alert ('Please enter Chart-Title!');
	}
}

function get_save_response() {
	if(http.readyState == 4){
		var r = http.responseText;
		
		$('box_save_title').disabled = true;
		$('box_save_button').disabled = true;
		if ($('box_save_done') != null)
			$('box_save_done').style.display='block';
		setTimeout ("fade_save_response()", 2000);
	}
}

function fade_save_response() {
	new Effect.Fade($('box_save'));	
	new Effect.Appear($('embed'));		
}
			
function populate_stations() {	
	
	if ($('StationsNo')!=null) {
		$('StationsStationsSelect').innerHTML = '';
		$('StationsNo').innerHTML = '&nbsp;('+stations.length+')';
		for (i = 0; i < stations.length; i++) {
			tag_div = Builder.node('div', { className: 'sr' });
			
			tag_div.innerHTML += '<input type="checkbox" value="'+stations[i]['i']+'" onclick="c(\'\',this.value,this.checked);" checked/><a href="/stations/'+stations[i]['u']+'">'+stations[i]['n']+'</a>&nbsp;<small>'+stations[i]['d']+'</small>';
			
			//tag_input = Builder.node('input', { value: stations[i]['i'], type: 'checkbox', onclick:'c(\'\',this.value,this.checked);', checked: true });
			//tag_link = Builder.node('a', { href: '/stations/'+stations[i]['u'] }, stations[i]['n']); //.replace('&#39;',"'"));
			//tag_desc = Builder.node('small', ' '+stations[i]['d']); //.replace('&#39;',"'"));
			//tag_div.appendChild(tag_input);
			//tag_div.appendChild(tag_link);
			//tag_div.appendChild(tag_desc);
			$('StationsStationsSelect').appendChild (tag_div);						
		}	
	}
	/*if ($('GenresNo')!=null) {
		$('GenresNo').innerHTML = '&nbsp;('+genres.length+')';
		for (i = 0; i < genres.length; i++) {
			tag_div = Builder.node('div', { className: 'sr' });
			tag_input = Builder.node('input', { value: genres[i]['name'], type: 'checkbox', onclick:'c(\'StationGenres\',this.value,this.checked);', checked: true });		
			tag_link = Builder.node('a', { href: '/charts/'+genres[i]['url'] }, genres[i]['name'].replace('&#39;',"'"));
			tag_div.appendChild(tag_input);
			tag_div.appendChild(tag_link);
			
			$('StationsGenresSelect').appendChild (tag_div);
		}	
	}*/
}

function mass_select(id,val) {	
	temp = '';
	for (i=0;i<$(id).childNodes.length;i++) {
		if ($(id).childNodes[i].className=='sr') {
			for (j=0; j<$(id).childNodes[i].childNodes.length;j++) {
				if ($(id).childNodes[i].childNodes[j].nodeName == 'INPUT') {
					$(id).childNodes[i].childNodes[j].checked=val;										
					if (val) {
						if (temp != '') temp += ';';
						temp += $(id).childNodes[i].childNodes[j].value;
					}
				}
			}
		}
	}
	if (id == 'StationsGenresSelect') 
		$('StationGenres').value = temp;
	else if (id == 'StationsStationsSelect')
		$('StationStations').value = temp;
}

function scroll_charts_stop() {
	setTimeout ("scroll_charts_freeze()", 300);
}

function scroll_charts_freeze() {
	debug('stop');
	if (typeof (chart_scroller) != 'undefined')
		chart_scroller.cancel();	
}

function scroll_charts() {	
	chart_height = Element.getHeight($('box_charts_container'));
	
	status = '';
	if (typeof (chart_scroller) != 'undefined')
		status = chart_scroller.get_state();
	
	if (chart_height > 550 && status != 'running') {
		debug('start');
		chart_items = Math.round(chart_height/55);	
		chart_scroller = new Effect.Move($('box_charts_container'), { y: '-'+(chart_height-550), mode: 'absolute', duration: (chart_items*1) , afterFinish: 
			function() {
					chart_scroller = new Effect.Move($('box_charts_container'), { y: '0', mode: 'absolute', duration: (chart_items*1) , afterFinish: 
						function () {
							scroll_charts();
						}});
				}});
	}
}

function scroll_charts_down(init_flag) {
	if (init_flag) { scroll_down_mouse = true;	}
	if (typeof (chart_scroller) != 'undefined') {
		status = chart_scroller.get_state();
	}
		
	if ($('box_charts_container').style.top=='')
		current_top = 0;
	else
		var current_top = parseInt($('box_charts_container').style.top.substring(0,$('box_charts_container').style.top.length-2));
	chart_height = Element.getHeight($('box_charts_container'));
	
	if (current_top > -1*(chart_height-(10*55)) && status != 'running') {
		chart_scroller = new Effect.Move($('box_charts_container'), { y: current_top-55, mode: 'absolute', duration: 0.2, afterFinish: function() {			
		if (scroll_down_mouse) scroll_charts_down(false); } } );
	}
}

function scroll_charts_up(init_flag) {
	if (init_flag) scroll_up_mouse = true;
	if (typeof (chart_scroller) != 'undefined') {
		status = chart_scroller.get_state();
	}
		
	if ($('box_charts_container').style.top=='')
		current_top = 0;
	else
		var current_top = parseInt($('box_charts_container').style.top.substring(0,$('box_charts_container').style.top.length-2));
		
	if (current_top < 0 && status != 'running') {
		chart_scroller = new Effect.Move($('box_charts_container'), { y: current_top+55, mode: 'absolute', duration: 0.2, afterFinish: function() {	
		if (scroll_up_mouse) scroll_charts_up(false); } } );
	}
}

function c(id, item, status) {
	if (id == '')
		id = 'StationStations';
	current = $(id).value;
	current = current.split(';');
	result = '';
	for (i = 0; i < current.length; i++) {
		if (current[i] != item) {
			if (result != '') result += ";";
			result += current[i];
		}
	}
	if (status) {
		if (result != '') result += ";";
		result += item;				
	}
	$(id).value = result;
}

function play_video(rank_id) {	
	if (last_played != null) {
		$('charts_item_rank_'+last_played).style.backgroundImage='';
		$('charts_item_rank_'+last_played).style.color = '#FFFFFF';
	}
	last_played = rank_id;
	$('charts_item_rank_'+rank_id).style.backgroundImage='url(/img/bg_item_active.png)';
	$('charts_item_rank_'+rank_id).style.color = '#464646';
	
	video_id = charts[rank_id];
	
	params = 'data[Song][song_id]='+songs[video_id]['song_id'];
	request_post('/ajax/songs',params,'get_artists_response');	
		
	var current_left= parseInt($('box_container_scroll').style.left.substring(0,$('box_container_scroll').style.left.length-2));
	if ($('box_container_scroll').style.left=='')
		current_left = 0;
	
	reset_widget();
	
	if (typeof (container_slider) != 'undefined')
		status = container_slider.get_state();
				
	if (status != 'running' && current_left == -496) {
		container_slider = new Effect.Move($('box_container_scroll'), { x: 0, mode: 'absolute', afterFinish: function () {
				
			} } );				
		set_video(video_id,false);
		$('scroll_right').style.display='block';
		//new Effect.Appear($('scroll_right'));		
	} else {
		set_video(video_id,true);
	}
}

function set_video(video_id,block) {

	if (typeof (songs[video_id]) != 'undefined' && typeof(songs[video_id]['youtube'])!='undefined') {
		if (songs[video_id]['title'].length > 27)
			songs[video_id]['title'] = songs[video_id]['title'].substr(0,27)+"...";
		if (songs[video_id]['artist'].length > 27)
			songs[video_id]['artist'] = songs[video_id]['artist'].substr(0,27)+"...";
		$('box_video_artist').innerHTML = songs[video_id]['artist'];
		$('box_video_title').innerHTML = songs[video_id]['title'];
		if (songs[video_id]['youtube']!='') {						
			//$('video_embed').innerHTML = '<object width="430" height="348"><param name="movie" value="http://www.youtube.com/v/'+songs[video_id]['youtube']+'&hl=de&fs=1&autoplay=1&enablejsapi=1&playerapiid=chartsplayer"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/'+songs[video_id]['youtube']+'&hl=de&fs=1&autoplay=1&enablejsapi=1&playerapiid=chartsplayer" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="430" height="348"></embed></object>';	
			debug ("load video "+songs[video_id]['youtube']);
					
			//if ($('video_embed_player') != null) {
				debug ("First Video Load");
				$('video_embed').innerHTML = '<div id="video_embed_player"></div>';
				var params = { allowScriptAccess: "always" };
		    var atts = { id: "myytplayer"+yt_count };
		    swfobject.embedSWF("http://www.youtube.com/v/"+songs[video_id]['youtube']+"&autoplay=1&showsearch=0&enablejsapi=1&playerapiid=myytplayer"+yt_count, 
		                       "video_embed_player", "430", "348", "8", null, null, params, atts);			
				$('video_empty').style.display = 'none';
				yt_count++;
			//} else {
			//	debug ("Consecutive Video Load");
			//	ytplayer.clearVideo();
			//	ytplayer.loadVideoById(songs[video_id]['youtube']);
			//	ytplayer.playVideo();
			//}
			
		} else {
			$('video_embed').innerHTML = '<div id="video_embed_player">';
			$('video_empty').style.display = 'block';
		}
	} else {
		$('video_embed').innerHTML = '<div id="video_embed_player">';
		$('video_empty').style.display = 'block';
	}
}

function onytplayerStateChange(newState) {
  debug("player's new state: " + newState);
  if (newState == 0) {
   	//	Video finished, on to the next!   	
   	if (last_played < (charts.length-1)) {
   		ytplayer.stopVideo();
   		setTimeout ("play_video("+(last_played+1)+")", 10);
   		//play_video(last_played+1);
   	}
	}
}

function onytplayerError(err){
	debug("YouTube Error: "+err);
}

function onYouTubePlayerReady(playerId) {
	debug ("player ready (ID: "+playerId+")!");
  //ytplayer = document.getElementById("myytplayer");
  ytplayer = document.getElementById(playerId);
	ytplayer.addEventListener("onStateChange", "onytplayerStateChange"); 
	ytplayer.addEventListener("onError", "onytplayerError"); 
}

function reset_widget() {

	if (document.getElementById('yes_container')==null) {
	} else {
		$('yes_container').innerHTML = '<div id="yes" style="text-align:center; color: #FFFFFF; width: 446px; height: 326px;"></div>';
	}
}

function hide_video() {
	
	if (last_played != null) {
		$('charts_item_rank_'+last_played).style.backgroundImage='';
		$('charts_item_rank_'+last_played).style.color = '#FFFFFF';
	}
	
	if (document.getElementById('yes_container')==null) {
	} else {
		init_widget();	
	}
	
	var current_left= parseInt($('box_container_scroll').style.left.substring(0,$('box_container_scroll').style.left.length-2));
	if ($('box_container_scroll').style.left=='')
		current_left = 0;
	
	if (typeof (container_slider) != 'undefined')
		status = container_slider.get_state();
				
	if (status != 'running' && current_left == 0) {
		$('video_embed').innerHTML = '<div id="video_embed_player">';
		new Effect.Fade($('scroll_right'));
		container_slider = new Effect.Move($('box_container_scroll'), { x: -496, mode: 'absolute' } );
	}
}

function get_charts_onkey(event) {	
	if(event.keyCode==13) 
		get_charts();
}
	
function get_charts() {	
	scroll_charts_freeze();
	
	new Effect.Fade($('embed'));
	
	from = $('StationFrom').value+$('StationFrom-mm').value+$('StationFrom-dd').value;
	to = $('StationTo').value+$('StationTo-mm').value+$('StationTo-dd').value;
	params = 'data[Station][stations]='+encodeURIComponent($('StationStations').value)+'&data[Station][genres]='+encodeURIComponent($('StationGenres').value)+'&data[Station][from]='+from+'&data[Station][to]='+to+'&data[Station][results]='+$('StationResults').value+'&data[Station][data]='+$('StationData').value+'&data[Station][artist_id]='+$('StationArtist').value+'&data[Station][artist]='+encodeURIComponent($('StationArtistKeyword').value);
	request_post('/ajax/charts',params,'get_charts_response');	
	if ($('box_save_done') != null)
			$('box_save_done').style.display='none';

	if (user_login) {
		$('box_save_title').disabled = false;
		$('box_save_button').disabled = false;
	}
	$('box_save_title').value = 'Chart-Title...';
	$('box_rating').style.display='none';
	$('progress_indicator').style.display = 'block';
	$('box_charts_legend').innerHTML = '&nbsp;';
	$('box_charts_title').innerHTML = '&nbsp;';
	$('box_charts_title').style.backgroundColor = 'transparent';
	$('box_save_title').value = 'Chart-Title...';				
	
	$('box_save').style.display='none';
	new Effect.Morph($('box_charts_container'), { style: { left: '540px', top: '0px' }, afterFinish: function () {		
		
	} } );
}

function get_charts_response() {
	if(http.readyState == 4){
		var r = http.responseText;
		r = eval('('+r+')');
		$('box_charts_container').innerHTML = r['html'];
		debug(r['sql']);
		songs = r['songs'];
		charts = r['charts'];
		chart_list = r['chart_list'];
		station_list = r['station_list'];
		position_list = r['position_list'];
		$('box_charts_legend').innerHTML = r['chart_desc'];
		$('box_charts_title').innerHTML = r['chart_title'];
		$('box_charts_title').style.backgroundColor = '#575757';
		$('box_save_title').value = 'Chart-Title...';
		new Effect.Appear($('box_save'));
		if (songs.length>0)
			new Effect.Appear($('box_save'));
		$('progress_indicator').style.display = 'none';
		new Effect.Morph($('box_charts_container'), { style: { left: '0px' }, afterFinish: function () {
			if ($('StationScroll').checked)
				scroll_charts();
		} } );		
	}
}

function get_artists_response() {
	if(http.readyState == 4){
		var r = http.responseText;
		r = eval('('+r+')');
		$('bio').innerHTML ='';
		if (r['image']) {
			$('bio').innerHTML = '<div style="float: right; margin: 0px 0px 10px 10px;"><img id="bio_image" src="'+r['image']+'" alt="Artist"/></div>';
		}
		if (r['bio'])
			$('bio').innerHTML += r['bio'];
		else
			$('bio').innerHTML += 'Not available.';
		if (!r['lastfm_url']) {
			r['lastfm_url'] = 'http://last.fm/search?m=all&q='+encodeURIComponent(r['name']);
		}
		$('recommended_stations_artist').innerHTML = r['name'];
		if (r['top']) {
			$('recommended_stations').style.display = 'block';	
			$('recommended_stations_list').innerHTML = r['top'];
		} else {
			$('recommended_stations').style.display = 'none';
			$('recommended_stations_list').innerHTML = '';
		}
		$('bio_lastfm_1').href = r['lastfm_url'];
		$('bio_lastfm_2').href = r['lastfm_url'];
		$('bio_lastfm').style.display='block';
		
		if (r['lyrics'])
			$('lyrics').innerHTML = r['lyrics'];
		else
			$('lyrics').innerHTML = 'Not available.';
		if (!r['lyricwiki']) {
			r['lyricwiki'] = 'http://lyricwiki.org/Special:GoogleSearchResults?cx=partner-pub-7265006513689515:enbi50a4igp&cof=FORID:9&ie=UTF-8&sa=Search&q='+encodeURIComponent(r['name']);
		}
			
		$('lyrics_link_1').href = r['lyricwiki_link'];
		$('lyrics_link_2').href = r['lyricwiki_link'];
	}
}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function strip_tags(str){
	var re= /<\S[^><]*>/g
	return str.replace(re, "");
}

function delTag(prefix,id) {
	$(prefix+'tags').removeChild($(prefix+'tag_'+id));
	if (trim($(prefix+'tags').innerHTML)==',')
		$(prefix+'tags').innerHTML = '';
	else if ($(prefix+'tags').innerHTML.substr(0,2)==', ')
		$(prefix+'tags').innerHTML = $(prefix+'tags').innerHTML.substr(2);
}
	
function addTag (prefix,tag) {
	var separator = '';
	var new_id = Math.floor(Math.random()*100000)+max_tag;
	tag = strip_tags(tag);
	if ($(prefix+'tags').innerHTML != '')
		separator = ', ';
	$(prefix+'tags').innerHTML = '<span id="'+prefix+'tag_'+new_id+'" class="tag"><input type="hidden" name="data[Video]['+prefix+'Tag][]" value="'+tag+'"/>'+tag+
												'&nbsp;<a href="javascript:delTag(\''+prefix+'\','+new_id+');">[x]</a>'+
	                      '</span>'+separator+$(prefix+'tags').innerHTML;
	$(prefix+'tag').value='';
}

// debug: Add Debug-Message to #debug-div

function debug(msg) {
	if (document.getElementById('debug_box'))
		$('debug_box').innerHTML = msg+"<br/>"+$('debug_box').innerHTML;
}

// switchDebug: Switch #debug-div on/off

function switchDebug() {	
	
	if (Element.getHeight($('debug')) <= 30) {
		$('debug').style.height = "400px";
		$('debug').style.width = "300px";
	} else {
		$('debug').style.height = "11px";
		$('debug').style.width = "65px";
	}
}

function responseRating () {
	if(http.readyState == 4){
  	var r = http.responseText;
    eval(r);        
	}	
}

// buildRating: creates HTML-code for rating-stars

function buildRating (video_id, rating, prefix) {
	res = '';
	
	return res;
}

// request_get: make a GET-ajax-request

function request_get (url,callback) {
	if (http==null)
		http = createRequestObject();
	if (!callInProgress(http)) {
	    http.open('get', url, true);
	    http.onreadystatechange = eval(callback);
	    http.send(null);
	}		
}

// request_post: make a POST-ajax-request

function request_post (url,params,callback) {
	if (http==null)
		http = createRequestObject();
	if (!callInProgress(http)) {
		http.open('POST', url, true);
        http.onreadystatechange = eval(callback);
        http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      	http.setRequestHeader("Content-length", params.length);
      	http.setRequestHeader("Connection", "close");
        http.send(params);
	}
}

// createRequestObject: create xml-HTTP-object

function createRequestObject() {
    var xmlhttp;

    try {

        xmlhttp = new XMLHttpRequest();
    } catch (e) {
        var MSXML_XMLHTTP_PROGIDS = new Array(
          'MSXML2.XMLHTTP.5.0',
          'MSXML2.XMLHTTP.4.0',
          'MSXML2.XMLHTTP.3.0',
          'MSXML2.XMLHTTP',
          'Microsoft.XMLHTTP');
        var success = false;
        for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) {
            try {
                xmlhttp = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]);
                success = true;
            } catch (e) {}
        }
        if (! success) {
            //alert ('No AJAX-Support for this browser :(!');
        }
    }
    return xmlhttp;
}

function callInProgress(xmlhttp) {
    switch ( xmlhttp.readyState ) {
        case 1:
              case 2:
              case 3:
            return true;
        break;
        default:
            return false;
        break;
    }
}

var http = null;
//var http = createRequestObject();
var songs = Array();
var charts = Array();
var chart_list = null;
var station_list = null;
var position_list = null;
var last_played = null;
var yt_count = 0;
var scroll_down_mouse = false;
var scroll_up_mouse = false;
//setTimeout ("scroll_charts()", 700);
