var linkExtractor = {
		'info': {
			'author': 'Matthias Ruchay',
			'version': '0.5.2'
			}
		};

var regExp = {};
	regExp.filterLinks = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

function outputLinks(links) {
	var precalc = links.length;
	
	for(var a=0; a<precalc; ++a) {
		$('<div/>').addClass(((a%2==0) ? 'la' : 'lb')).html(links[a]).appendTo($('#output'));
		}
	}


function filterLinks() {
	$('#output').hide();
	$('#output').empty();
	var elText = $('#input_text');
	var elFilter = $('#input_filter');
	var elFilterstatus = $('#input_filterstatus');
	var text = elText.val();
	var matches = [];
	var count = 0;
	
	while((match = regExp.filterLinks.exec(text)) != null
			&& match.length > 1
			&& match[1] != '') {
		count++;
		
		var link = match[0];
		if($('#input_filterstatus').attr('checked')==false) {
				matches.push(link);
				}
			else {
				var filter = $('#input_filter').val().replace(/\s+/,'').split(',');
				for(var a=0; a<filter.length; ++a) {
					if(filter[a].toLowerCase()==link.replace('http://','').replace('www.','').split('/')[0].toLowerCase())
						matches.push(link);
					}
				}
		text = text.replace(link, '');
		}

	outputLinks(matches);
	$('#output').show();
	$('#ui-dialog-linkextractor-result').dialog('option', 'position', 'center');
	return true;
	}

$(document).ready(function() {
	// dialog link-extractor
	$('<div/>').attr('id', 'ui-dialog-linkextractor').attr('title', 'Link-Extractor (Version ' + linkExtractor.info.version + ')').html('').appendTo('body').hide();
		$('<label/>').attr('for', 'input_text').html('Paste text with Plaintext-Links here!').appendTo('#ui-dialog-linkextractor');
			$('<textarea/>').attr('id', 'input_text').appendTo('#ui-dialog-linkextractor');//.html('Te quo idque affert corpora, oratio denique referrentur an eos, vocent alienum aliquyam cum te. Ea aeque eruditi pertinax nec, sed te scripta omittantur. Cu ius liber homero detraxit, http://google.de no mea possit timeam praesent, ius cu duis aperiam nonummy? Menandri mandamus inimicus pri an? Est ut semper impetus aperiri, lobortis volutpat forensibus vim eu. Per solum novum http://www.yahoo.de/suche//langerpath/?id=123 repudiandae ei, duo ne idque lorem diceret.\n\nPrima partiendo an qui. Modus melius persius pro te, lorem erant ex vim, graeci invenire corrumpit at his? Ex vim http://www.bluehost.to/file/test.rar  impedit maiorum, mei suas ferri mediocritatem ei, est no nulla solet tritani? Quas audiam discere cu vis, sea nemore ancillae antiopam ei, cum albucius maiestatis http://bluehost.to/file/testfile2.deb  interpretaris te? Usu at quis putent mnesarchum, justo lobortis est ne?');
		var divFilter = $('<div/>').attr('class', 'divblock');
			$('<label/>').attr('for', 'input_filter').html('Host Filter: (Separate by comma)').appendTo(divFilter);
				$('<input/>').attr('type', 'checkbox').attr('checked', false).attr('id', 'input_filterstatus').appendTo(divFilter);
				$('<input/>').attr('type', 'text').attr('id', 'input_filter').appendTo(divFilter);
			divFilter.appendTo('#ui-dialog-linkextractor');
	
	// dialog filtered links
	$('<div/>').attr('id', 'ui-dialog-linkextractor-result').attr('title', 'Link-Extractor - Result').html('').appendTo('body').hide();
		$('<div/>').attr('id', 'output').html('').appendTo('#ui-dialog-linkextractor-result');
	
	// Dialog Link-Extractor
	$('#ui-dialog-linkextractor').dialog({
		position: ['center', 100],
		autoOpen: true,
		width: 508,
		resizable: false,
		buttons: {
			"Extract Links": function() { 
				$('#ui-dialog-linkextractor-result').dialog('open');
				filterLinks();
				$(this).dialog('disable');
				//$(this).dialog("close"); 
				}, 
			"Clean up": function() { 
				$('#input_text').val('').focus();
				}, 
			"Reset": function() { 
				$('#input_filter').val('');
				$('#input_filterstatus').attr('checked', false);
				$('#input_text').val('').focus();
				$.cookie('linkextractor_filter', null, 1);
				} 
			},
		open: function() {
			var title = $(".ui-dialog-title").html();
				var img = $('<img/>').attr('src', './html-data/images/linkextractor.png');
				$('.ui-dialog-title').empty().append(img).append(title);
				
				//$('<div/>').addClass('ui-dialog-buttonpane-top').html('Your advertisement here? <a href="http://nanobyte-online.de/impressum.htm" target="_blank">Contact us!</a><br/><a href="http://bluehost.to/" target="_blank"><img src="http://bluehost.to/Bilder/468.gif" alt="Banner" border="0" /></a>').insertBefore($('.ui-dialog-buttonpane'))
				
			/*
				$('<span/>').addClass('ui-icon ui-icon-help').html('HELP').click(function() {
					alert('Help!');
					}).appendTo($('.ui-dialog-titlebar-close').parent().get(0));
			*/
			$(".ui-dialog-titlebar-close").hide();
			}
	});
	
	// Dialog
	$('#ui-dialog-linkextractor-result').dialog({
		autoOpen: false,
		width: 520,
		modal: true,
		buttons: {
			"Close": function() { 
				$(this).dialog("close"); 
				}, 
			"Select text": function() {
				autoSelectText('output');
				} 
			},
		close: function() { 
				$('#ui-dialog-linkextractor').dialog('enable');
				} 
	});
	
	// Prepare Inputs
	$('#input_filter').val($.cookie('linkextractor_filter'));
		$('#input_filterstatus').attr('checked', (($.cookie('linkextractor_filter')?true:false)));
		$('#input_filter').focus(function() {
				$('#input_filterstatus').attr('checked',  true);
				});
		$('#input_filter').blur(function() {
				if(this.value=='') {
					$('#input_filterstatus').attr('checked',  false);
					$.cookie('linkextractor_filter', null, 0);
					return;
					}
				$.cookie('linkextractor_filter', this.value, ((new Date()).getTime()*1000*60*60*24*90));
				});

	$('#input_text').focus();
});		// end of document.ready
