// JavaScript Document


function metalSelect(metal){
	switch(metal){
		case 'Gold':
			document.getElementById('selectKarat').style.display = 'block';
			document.getElementById('silverMessage').style.display = 'none';
			document.getElementById('platinumMessage').style.display = 'none';
			break;
		case 'Platinum':
			document.getElementById('selectKarat').style.display = 'none';
			document.getElementById('silverMessage').style.display = 'none';
			document.getElementById('platinumMessage').style.display = 'block';
			break;
		case 'Silver':
			document.getElementById('selectKarat').style.display = 'none';
			document.getElementById('silverMessage').style.display = 'block';
			document.getElementById('platinumMessage').style.display = 'none';
			break;
		default:
			return false;
		
	}
	document.getElementById('metalTypeMessage').innerHTML = metal;
	return true;
}

function scaleSelect(type){
	switch(type){
		case 'Grams':
			document.getElementById('scaleMessage').style.display = 'none';
			document.getElementById('weightMessurment').innerHTML = 'Grams';
			break;
		case 'Ounces':
			document.getElementById('scaleMessage').style.display = 'block';
			document.getElementById('weightMessurment').innerHTML = 'Ounces';
			break;
		default:
			return false;
	}
	return true;
}

function calculateNow(){
	var metal = document.getElementById('metalSelect').value;
	var karat = document.getElementById('karatType').value;
	var scale = document.getElementById('scaleType').value;
	var weight = document.getElementById('weight').value;
	var price = document.getElementById('price').value;
	
	var calcValue = 0;
	
	if(! isNumeric(weight)){
		document.getElementById('weight').style.border = '1px solid red';
		return false;
	}else{
		document.getElementById('weight').style.border = '1px solid #7F9DB9';
	}
	
	if(! isPrice(price)){
		document.getElementById('price').style.border = '1px solid red';
		return false;
	}else{
		document.getElementById('price').style.border = '1px solid #7F9DB9';
	}
	
	switch(metal){
		case 'Gold':
			if(scale == 'Grams'){
				calcValue = (price * karat * .65 / 31.103) * weight;
			}else{
				calcValue = (price * karat * .65 * .911458333) * weight;
			}
			break;
		case 'Platinum':
			if(scale == 'Grams'){
				calcValue = (price * .60 / 31.103) * weight;
			}else{
				calcValue = (price * .60 * .91145833) * weight;
			}
			break;
		case 'Silver':
			if(scale == 'Grams'){
				calcValue = (price * .58/ 31.103) * weight;
			}else{
				calcValue = (price * .58 * .91145833) * weight;
			}
			break;
		default:
			return false;
	}
	
	document.getElementById('calculatedValue').innerHTML = calcValue.toFixedRound(2);
}

function clearAll(){
	metalSelect('Gold');
	scaleSelect('Grams');
	document.getElementById('metalSelect').options[0].selected=true;
	document.getElementById('karatType').options[0].selecteed=true;
	document.getElementById('scaleType').options[0].selected=true;
	document.getElementById('weight').value='';
	document.getElementById('price').value='';
	document.getElementById('calculatedValue').innerHTML='';
}

function isNumeric(input){
    var RE = /^\d*\.{0,1}\d*$/;
    return (RE.test(input));
}

function isPrice(input){
    var RE = /^\d*(\.\d{0,2}){0,1}$/;
    return (RE.test(input));
}

Number.prototype.toFixedRound= function(n){
var N= this;
N= Math.round(N*Math.pow(10,n));
N/=Math.pow(10,n);
return(N.toFixed(n));
}

function init(){
	metalSelect('Gold');
	scaleSelect('Grams');
}

init();