//
// micke.cc script
// Copyright 2006-2009 by Mikael Degerfält
// =)
//

var obj=null;

function loadXMLString(txt)
{
	try{
		var p=new DOMParser();
		return p.parseFromString(txt,"text/xml");
	}
	catch(e){
		try{
			var d=new ActiveXObject("Microsoft.XMLDOM");
			d.async="false";
			d.loadXML(txt);
			return d;
		}
		catch(e) {alert(e.message)}
	}
	return null;
}


function checkHover(){if(obj) obj.find('ul').fadeOut('fast');}

// On page load 
$(function(){
	ol_get();
	$('#oneliner_button').click(ol_send);
	$('#oneliner_message').keypress(function(evnt){if(evnt.which==13)ol_send(this);});

	$('#loginbutton').click(sendLogin);
	$('#username').keypress( user_keypress );
	$('#password').keypress( pass_keypress );

	if( $.jScorllPane )
		$('#oneliners').jScrollPane({scrollbarWidth:8});
	lastfm_update();

	$('#Nav > li').hover(function(){
		if(obj){
			obj.find('ul').fadeOut('fast');
			obj=null;
		}
		$(this).find('ul').fadeIn('fast');
	}, function() { obj=$(this); setTimeout( "checkHover()",500); });
	
	$('.modal').dialog({ autoOpen:false, modal:true, resize: false, });
	
});


function ol_html_str(entry){
	var d = entry.date.substr(11,5);
	return "<div><b>"+d +"</b> "+entry.message+"</div>" ;
}

function ol_update(data)
{
	if(data.status=='ok') {
		var out = $("#oneliners").empty();
		for(x in data.values)
			$(out).append(ol_html_str(data.values[x]));
		if( $.jScrollPane )
			$('#oneliners').jScrollPane()[0].scrollTo(10000);
	}
}

var ol_timer = null;
function ol_get(){
	$.post('/api/json/oneliners.php',{action:'get'}, ol_update, 'json');
	lfmTimer = setTimeout( "ol_get()", 1000*60*0.3);
}

function ol_send(mess){
	$.post('/api/json/oneliners.php',{action:'add',message:$(mess).val()},ol_update,'json');
	$(mess).val('');
}

function login_form()
{
	$('#username').val( '' );
	$('#password').val( '' );
	$('#login_modal').dialog('open');
}

function logout() {
	$.post("/api/json/login.php", { action: 'logout' },function(data,status){  }, 'json' );
}

function user_keypress( evnt )
{
	if( window.event )	// IE specific
		key = window.event.keyCode;
	else				// other browsers
		key = evnt.which;

	if( key == 13 )	// on return or enter...
		document.getElementById('password').focus();
}


function pass_keypress( evnt )
{
	if( window.event )	// IE specific
		key = window.event.keyCode;
	else				// other browsers
		key = evnt.which;

	if( key == 13 )	// on return or enter...
	{
		sendLogin();
		return false;
	}
}

function sendLogin()
{
	var u=$('#username').val();
	var p=$('#password').val();
	$("#login_progress" ).css('display',"inline");
	$.post("/api/json/login.php", {'action': 'login', 'user':u,'pass':p},function(data,status){
			if( status == 'success' && data['status'] == 'ok' ){
				
			}
			else { alert('Kunde inte logga in.'); }
		}, 'json' );
	$('#login_modal').dialog('close');
}

var lfmTimer = null


function lfm_make_entry(node)
{
	var entry = new Array();
	entry['title'] = $("name",node).text();
	entry['artist'] = $("artist",node).text();

	var when = "now";
	var d=$("date",node).attr('uts');
	if(d){
		var ts=new Date();
		ts.setTime(d*1000);
		var m=ts.getMonth()+1;
		d=ts.getDate();
		var h=ts.getHours();
		var mi=ts.getMinutes();
		if(m<10)m="0"+m;if(d<10)d="0"+d;if(h<10)h="0"+h;if(mi<10)mi="0"+mi;
		when=ts.getFullYear()+"-"+m+"-"+d+" "+h+":"+mi
	}
	entry['when'] = when
	return entry;
}

function lastfm_update()
{
	$.post('/xml/as/getRecent.php',
			{'user':'vitskagget'},
			function(data){
				var doc=loadXMLString(data);
				var lfmData = ""
				$("track:lt(5)",doc).each( function(i){
					var song = lfm_make_entry(this)
					song['when'] = song['when'] == 'now' ? "Spelas nu": song['when'];
					lfmData += '<b>'+song['when']+'</b><br />'+song['artist']+' - '+song['title']+'<p />'
				} );
				$('#lastfm').html(lfmData);

				$('#lfm').each(function(i){
					var entry = lfm_make_entry( $( "track:first",doc) )
					if( entry['when'] == 'now' )
						$(this).html( "Lyssnar på <b>" +entry['artist'] + " - " +entry['title'] + "</b>" );
					else
						$(this).html( "Lyssnade senast på <b>" +entry['artist'] + " - " +entry['title'] + "</b>" );
				});
			}
		);
	lfmTimer = setTimeout( "lastfm_update()", 1000*60*1);
}


