function convertToRoman(num) {
	var number = document.getElementById('number').value;
	var reg = /^(((M{0,4}((C)?M)?((C)?D)?C{0,3}((X)?C)?((X)?L)?X{0,3}((I)?X)?((I)?V)?I{0,3}))|(MMMMM))$/i;
	if(reg.exec(number.toUpperCase())) {
		convertToNumber(number.toUpperCase());
	} else if(isNaN(number) && !reg.exec(number)) {
		alert('Please enter a valid Roman Numeral less than or equal to five thousand');
	} else if((number <=0) || (Math.floor(number)!=number)) {
		alert('Please enter a valid non-negative integer');
	} else if(number > 5000) {
		alert('Please enter a number less than or equal to 5000');
	} else {
		romanNum = convertRoman(number);
		document.getElementById('number').value = romanNum;
	}
}

function convertRoman(inVar) {
	if(inVar >= 1000) {
		return 'M'+ convertRoman((inVar-1000));
	} else if(inVar >= 900) {
		return 'CM'+ convertRoman((inVar-900));
	} else if(inVar >= 500) {
		return 'D'+ convertRoman((inVar-500));
	} else if(inVar >= 400) {
		return 'CD'+ convertRoman((inVar-400));
	} else if(inVar >= 100) {
		return 'C'+ convertRoman((inVar-100));
	} else if(inVar >= 90) {
		return 'XC'+ convertRoman((inVar-90));
	} else if(inVar >= 50) {
		return 'L'+ convertRoman((inVar-50));
	} else if(inVar >= 40) {
		return 'XL'+ convertRoman((inVar-40));
	} else if(inVar >= 10) {
		return 'X'+ convertRoman((inVar-10));
	} else if(inVar >= 9) {
		return 'IX'+ convertRoman((inVar-9));
	} else if(inVar >= 5) {
		return 'V'+ convertRoman((inVar-5));
	} else if(inVar >= 4) {
		return 'IV'+ convertRoman((inVar-4));
	} else if(inVar >= 1) {
		return 'I'+ convertRoman((inVar-1));
	}
	else {
		return '';
	}
}

function convertToNumber(romanString) {
	var numerals = new Array();
	numerals['M'] = 1000;
	numerals['D'] = 500;
	numerals['C'] = 100;
	numerals['L'] = 50;
	numerals['X'] = 10;
	numerals['V'] = 5;
	numerals['I'] = 1;
	var score = 0;
	if(romanString.indexOf('CM')!=-1) {
		score += 900;
		romanString = romanString.replace('CM','');
	}
	if(romanString.indexOf('CD')!=-1) {
		score += 400;
		romanString = romanString.replace('CD','');
	}
	if(romanString.indexOf('XC')!=-1) {
		score += 90;
		romanString = romanString.replace('XC','');
	}
	if(romanString.indexOf('XL')!=-1) {
		score += 40;
		romanString = romanString.replace('XL','');
	}
	if(romanString.indexOf('IX')!=-1) {
		score += 9;
		romanString = romanString.replace('IX','');
	}
	if(romanString.indexOf('IV')!=-1) {
		score += 4;
		romanString = romanString.replace('IV','');
	}
	for(i=0; i<romanString.length; i++) {
		score+=numerals[(romanString.charAt(i))];
	}
	document.getElementById('number').value = score;
}