$(function() {
	external_links();
	twitter_bird();
});

jQuery.fn.stripTags = function(replace) {
	return (replace) ? this.replaceWith( this.html().replace(/<\/?[^>]+>/gi, '') ) : this.html().replace(/<\/?[^>]+>/gi, '');
};

function external_links() {
	if (!document.getElementsByTagName) {
		return;
	}

    var anchors = document.getElementsByTagName('a');

    for (var i = 0; i < anchors.length; i++) {
        var anchor = anchors[i];

        if (anchor.getAttribute('href') && (anchor.getAttribute('rel') === 'external' || anchor.getAttribute('rel') === 'new-window')) {
            if (anchor.getAttribute('className')) {
                anchor.target = anchor.getAttribute('className');
            }
            else {
                anchor.target = '_blank';
            }
        }
    }
}

function twitter_bird() {
	var quote = $('#twitter blockquote');
	var quote_p = quote.children('p');
	var quote_str = quote_p.stripTags(0);
	var quote_width = parseInt((quote_str.length * 2.5) + 10);
	
	quote.width( (quote_width <= 160) ? 160 : quote_width);
	
	/*var shift_down = 0;
	
	$(document).keydown(function(e) {
		if (e.keyCode == 16) {
			shift_down = 1;
			console.log('shift is down');
		}
	}).keyup(function(e) {
		if (e.keyCode == 16) {
			shift_down = 0;
			console.log('shift is up');
		}
	});*/
	
	$('#twitter .bird').click(function(e) {
		e.preventDefault();
	}).mousedown(function(e) {
		if (quote.is(":visible")) {
			quote.fadeOut(250);
		} else {
			quote.fadeIn(250);
		}
	});
	
	$('#twitter').keydown(function(e) {
		/*if (quote.is(":visible") && (e.keyCode == 9)) {
			quote.fadeOut(250);
			
			if (shift_down) {
				$('#valid-css a').focus();
				e.preventDefault();
			}
		}*/
	}).focusin(function(e) {
		e.preventDefault();
		if (!quote.is(":visible")) {
			quote.fadeIn(250);
		}
	}).focusout(function(e) {
		e.preventDefault();
		if (quote.is(":visible")) {
			quote.fadeOut(250);
		}
	});
}

function toNumeral(value) {
	var units  = new Array('i', 'x', 'c', 'm', 'mmmmmmmmmm');
	var halfs  = new Array('v', 'l', 'd', 'mmmmm');
	if (!isNaN(parseInt(value))) {
		var decNumber = String(eval(value));
		var romNumeral = '';
		if ((decNumber.length>0) && ((Number(decNumber)>0) && (Number(decNumber)<10000))) {
			for (var i=1; i<=decNumber.length; i++) {
				n = Number(decNumber.charAt(decNumber.length-i));
				switch(n) {
					case 1: romNumeral = units[i-1] + romNumeral; break;
					case 2: romNumeral = units[i-1] + units[i-1] + romNumeral; break;
					case 3: romNumeral = units[i-1] + units[i-1] + units[i-1] + romNumeral; break;
					case 4: (i==4) ? romNumeral = units[i-1] + units[i-1] + units[i-1] + units[i-1] + romNumeral : romNumeral = units[i-1] + halfs[i-1] + romNumeral; break;
					case 5: romNumeral = halfs[i-1] + romNumeral; break;
					case 6: romNumeral = halfs[i-1] + units[i-1] + romNumeral; break;
					case 7: romNumeral = halfs[i-1] + units[i-1] + units[i-1] + romNumeral; break;
					case 8: romNumeral = halfs[i-1] + units[i-1] + units[i-1] + units[i-1] + romNumeral; break;
					case 9: (i==4) ? romNumeral =  units[i-1] + units[i-1] + units[i-1] + units[i-1] + units[i-1] + units[i-1] + units[i-1] + units[i-1] + units[i-1] + romNumeral : romNumeral = units[i-1] + units[i] + romNumeral; break;
					case 0: break;
				}
			}
			return romNumeral;
		} else {
			alert('Error: Number was below 1 or above 9999.');
		}
	} else {
		alert('Error: Please enter a valid number.');
	}
}