(function ($) {
	var AutoGraph = window.AutoGraph,
		target = (function () {
			var elms = document.getElementsByTagName('script'), last = (elms.length > 1) && elms[elms.length - 1], r = null;
			if (last && last.tagName.toLowerCase() === 'script' && last.parentNode.tagName.toLowerCase() !== 'head') {
				r = last.parentNode.appendChild(document.createElement('div'));
				r.id = 'trgt-' + (Math.random() + '').substr(2, 8);
				if (last.className) {
					r.className = last.className;
				}
			}
			return r;
		})();
	
	function showGuest(t, u) {
		AutoGraph.getData(u, function (userdata, type) {
			if (type === 'error') {
				$(t)
					.find('fieldset')
						.find('button').html('Get data!').end()
						.find('input').remove().end()
						.prepend('<input name="twitteruser" value="" type="text" />')
						.find('span').remove().end()
					.append($('<span>' + (userdata.error === 'This method requires authentication.'? 'Seems that Twitter "closed" the hole - specify a Twitter username to get data.' : userdata.error) + '</span>').css({'margin': '.25em 0 .5em', display: 'block'}));
			} else {
				$(t).empty();
				$('<div class="vcard"><img src="' + userdata.avatar + '" class="photo" /><h4 class="fn">' + userdata.name + '</h4><ul id="' + userdata.username + '-services"></ul>')
					.find('img').css({'float': 'left', margin: '0 .5em .5em 0', padding: '1px', border: '1px solid #000'}).end()
					.find('h4').css({'margin': 0, 'padding-top': '.3333em'}).each(function () {
						var loc = [];
						if (userdata.location) {
							loc = userdata.location.split(', ');
							$('<p><a class="adr" href="http://maps.google.com/maps?f=q&hl=en&geocode=&q=' + encodeURIComponent(userdata.location) + '"><span class="locality">' + loc[0] + '</span></p>')
								.css('margin', '.0833em 0 0')
									.find('a').each(function () {
										if (loc.length > 1) {
											$(this).append(', ').append('<span class="country-name">' + loc[1] + '</span>');
										}
									}).end()
								.insertAfter(this);
						}
					}).end()
					.find('ul').each(function () {
						$(this).css({listStyle: 'none', margin: 0, padding: '.25em 0 0', clear: 'both'});
						var service = '', link = '';
						for (service in userdata.services) {
							link = userdata.services[service];
							if (link.constructor === Array) {
								link = link[0];
							}
							$('<li><a href="' + link + '" class="url">' + AutoGraph.services[service].name + '</a></li>')
								.css({padding: '0 0 0 19px', margin: 0, width: '6em', 'float': 'left', background: 'transparent url(http://' + AutoGraph.extractHostname(link) + '/favicon.ico) no-repeat left top'})
								.appendTo(this);
						}
					}).end()
					.css({border: '1px solid #000', width: '100%', maxWidth: '100%', '-moz-box-sizing': 'border-box', '-webkit-box-sizing': 'border-box', 'box-sizing': 'border-box', padding: '.75em', 'float': 'left', fontFamily: 'Helvetica, Helvetica Neue, Arial, sans-serif', 'overflow': 'hidden', 'margin-bottom': '.75em'})
					.appendTo(t);
			}
		});
	}

	(function () {
		$ = $ || window.jQuery;
		if (!$) {
			return setTimeout(arguments.callee, 100);
		}
		if (target) {
			if (target.className === 'autorun') {
				showGuest(target);
			} else {
				$('<form method="get" action="#"><fieldset><button type="submit">Get my data!</button></fieldset></form>').submit(function (ev) {
					ev.preventDefault();
					showGuest(target, this.twitteruser && this.twitteruser.value);
				}).css({margin: '0 0 1em'}).appendTo($(target));
			}
		}
	})();
})();