function logMessage(s) {
	$('.loader').remove();
	if ($('#result').size() == 0)
		$('#getQuery').after("<div id='result'></div>");
	var newContent = $("<div>" + s + "</div>");
	newContent.hide();
	$('#result').append(newContent);
	newContent.fadeIn();
	return newContent;
};

function logError(err) {
	logMessage("<div class='error'>" + err + "</div>");
}

function logClear() {
	$('#result').remove();
}

function loadApplet() {
	$('#darioskyApplet').remove();
	$('#result').remove();
	var appletHtml = "<div id='jload'><applet class='jv' id='darioskyApplet' code='jetvideo/Jvideo.class' archive='jsmedia/jetvideo.signed.jar' width='0' height='0' MAYSCRIPT='true'>Per usare Getvideo devi attivare Javascript e Java.</applet></div>";
	$('#getQuery').after("<img class='loader' src='jsmedia/loading.gif'/>");
	$('#getQuery').after(appletHtml);
	var url = $('#getInput').val();
	setTimeout(function() { // I use a zero timeout just to be sure the creation
				// of applet ends (chrome workaround)
				$('#darioskyApplet').get(0).getvideo(url);
			}, 10);
}

/*
 * parseUri 1.2 by Steven Levithan
 * http://blog.stevenlevithan.com/archives/parseuri
 */

function parseUri(str) {
	var o = parseUri.options, m = o.parser[o.strictMode ? "strict" : "loose"]
			.exec(str), uri = {}, i = 14;

	while (i--)
		uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function($0, $1, $2) {
		if ($1)
			uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode : false,
	key : [ "source", "protocol", "authority", "userInfo", "user", "password",
			"host", "port", "relative", "path", "directory", "file", "query",
			"anchor" ],
	q : {
		name : "queryKey",
		parser : /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser : {
		strict : /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose : /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};
/* END OF parseUri */

messages = {
	"PleaseURL" : 'Inserisci un indirizzo prima, qualcosa tipo http://www.youtube.com/watch?v=Z6mSkzM6XAs',
	'hideList': 'nascondi lista',
	'showList': 'mostra lista'
}

function successPhp(results) {
	$('.loader').remove();
	for (var pack in results) {
		var type=results[pack].type;
		if (type=='img') {
			logMessage('<img src="'+results[pack].message+'" />');
		}
		else
			logMessage(results[pack].message).addClass(type);
		/*if (type=="message") logMessage(results[pack].message);
		else if (type=="error") logError(results[pack].message);
		else logMessage(results[pack].message);
		*/
	}
	
}

$(function() {
//	if (window.location.search!="") {	// get rid of get query
//		window.location.hash=window.location.search.substring(1);
//		window.location.search="";
//	}
	
	$('#getSubmit').click(function() {
		// form submit
		logClear();
		var url = $('#getInput').val();
		
		var result = '';
		var parsed = parseUri(url);
		var host = parsed.host;

		try {
			if (!url)
				throw messages["PleaseURL"];
			else if (host.indexOf('youtube') != -1)
				loadApplet();
			else {
				//logMessage('Passo a php. Host: ' + host);
				$('#getQuery').after("<img class='loader' src='jsmedia/loading.gif'/>");

				$.ajax( {
					type : 'GET',
					dataType: 'json',
					url : 'getvideo.php',
					data : {
						get : url
					},
					success : successPhp,
					error : function() {
						logError("Chiedevo il video ma dariosky non risponde.")
					}
				});

			}

			if (result)
				logMessage(result);
		} catch (err) {
			logError(err);
		}
		return false; // no default submit handling
		});

	if ($('#getInput').val())
		$('#getSubmit').trigger('click'); //submit automatico se ho gią  un url

	$('.detailBlock a').live('click', function() {
		$(this).parent().find(".details").slideToggle();
		return false;
	});
	
	$('#bookmarklet').click( function(){
		alert('Un bookmarklet ti consente di scaricare velocemente un video\nsenza dover fare copia-incolla dell\'indirizzo.\nTrascinalo tra i tuoi preferiti, vai alla pagina con il video da scaricare e accedici da li.');
		return false;
	});

	$('#getSites').click(function(){
		if ( $('#sites').size()==0 ) {
			$('.footer').after("<div id='sites'><img src='jsmedia/loading.gif'/></div>");
			$('#sites').load('supported/');
			$('#getSites').html(messages['hideList']);
			
			$('#getSites').unbind().toggle(
					function(){
						$('#sites').slideUp();
						$('#getSites').html(messages['showList']);
					},
					function(){
						$('#sites').slideDown();
						$('#getSites').html(messages['hideList']);
					}
			);
					
		}
		return false;
	});
	
	$('#sitesmore').live('click', function(){
		$('.hidden').toggle();
		return false;
	})

});
