
function onlyNumbers(inputString) {
	//var searchForNumbers = '/\D+\_+\W+\s+\S+/';
	var searchForNumbers = '^[0-9]{1,3}$';
	if ( inputString.search(searchForNumbers) < 0 ) {
		return false;
	} else {
		return true;
	}
	//inputString.search(searchForNumbers) ? return false : return true;
} 

// pelaajan reiältä saaman oman par:in ja reiän lyöntimäärän perusteella
// lasketaan reikäkohtainen pistemäärä */
function getPoints(omapar, lyonnit) {
	omapar = parseInt(omapar);
	lyonnit = parseInt(lyonnit);
	var pts = 0;
	if (lyonnit > (omapar + 1) || lyonnit == 0)  {
		// jos lyöntejä on enemmän, kuin omapar+1
		// reiän pistemäärä on 0
		pts = 0;	
	} else {
		pts = omapar - lyonnit + 2;
	}
	if ( pts < 0 ) { pts = 0; }
	return pts;
}


// laske ensimmäisen 9 reiän tulos
// kai tämäkin oli jokin neronleimaus että nämä piti pistää kahteen eri funktioon
function calculatePoints9(resultfieldname,ownparfieldname,pointfieldname) {
	var totalpoints = 0;
	var totalresult = 0;
	for ( var i=1; i<10; i++ ) {
		var robj = MM_findObj(resultfieldname+"_0"+i);
		var oobj = MM_findObj(ownparfieldname+"_0"+i);
		var pobj = MM_findObj(pointfieldname+"_0"+i);
		if ( robj.value == "" || robj.value == null ) {
			robj.value = 0;
		}
		if ( !onlyNumbers(robj.value) ) {
			robj.value = 0;
		}
		var points = getPoints(oobj.value,robj.value);
		totalresult += parseInt(robj.value);
		totalpoints += parseInt(points);
		pobj.value = parseInt(points);
	} // for
	var rsobj = MM_findObj(results_9);
	var psobj = MM_findObj(points_9);
	rsobj.value = totalresult;
	psobj.value = totalpoints;
}

// laske viimeisen 9 reiän tulos
function calculatePoints18(resultfieldname,ownparfieldname,pointfieldname) {
	var totalpoints = 0;
	var totalresult = 0;
	for ( var i=10; i<19; i++ ) {
		var robj = MM_findObj(resultfieldname+"_"+i);
		var oobj = MM_findObj(ownparfieldname+"_"+i);
		var pobj = MM_findObj(pointfieldname+"_"+i);

		if ( robj.value == "" || robj.value == null ) {
			robj.value = 0;
		}
		if ( !onlyNumbers(robj.value) ) {
			robj.value = 0;
		}
		var points = getPoints(oobj.value,robj.value);
		totalresult += parseInt(robj.value);
		totalpoints += parseInt(points);
		pobj.value = parseInt(points);
	} // for
	var rsobj = MM_findObj(results_18);
	var psobj = MM_findObj(points_18);
	rsobj.value = totalresult;
	psobj.value = totalpoints;
}

//rrrradiobuttons are notorious

// lasketaan yhteen tulokset ja pisteet jee
function calculatePointsAll(resultfieldname,ownparfieldname,pointfieldname,totalpointsfieldname,oldhcpfield,showoldhcpfield,newhcpfield,changefield){
	var totalresultsall = 0;
	var totalpointsall = 0;

	var rs9obj = MM_findObj(results_9);
	var ps9obj = MM_findObj(points_9);
	var rs18obj = MM_findObj(results_18);
	var ps18obj = MM_findObj(points_18);
	var rstobj = MM_findObj(results_total);
	var pstobj = MM_findObj(points_total);
	var pbobj = MM_findObj(bogeypoints_total);
	pbobj.value = rs9obj.value = ps9obj.value = rs18obj.value = ps18obj.value = rstobj.value = pstobj.value = 0;

	// radiobuttbuttbutton
	var htp = 0;
	for (i=0, n=document.forms[0].elements.length; i<n; i++) {
    	if (document.forms[0].elements[i].checked) {
			htp = document.forms[0].elements[i].value;
			break;
    	}
	}
	
	if ( htp == 0 ) { 
			calculatePoints9(resultfieldname,ownparfieldname,pointfieldname);
			calculatePoints18(resultfieldname,ownparfieldname,pointfieldname);
			rstobj.value = parseInt(rs9obj.value) + parseInt(rs18obj.value);
			pstobj.value = parseInt(ps9obj.value) + parseInt(ps18obj.value);
			pbobj.value = parseInt(pstobj.value) ;
	}	
	if ( htp == 1 ) {
			calculatePoints9(resultfieldname,ownparfieldname,pointfieldname);
			rstobj.value = parseInt(rs9obj.value) ;
			pstobj.value = parseInt(ps9obj.value) ;
			pbobj.value = parseInt(pstobj.value) + 18;
	}	
	if ( htp == 2 ) {
			calculatePoints18(resultfieldname,ownparfieldname,pointfieldname);
			rstobj.value = parseInt(rs18obj.value);
			pstobj.value = parseInt(ps18obj.value) ;
			pbobj.value = parseInt(pstobj.value) + 18;
	} 

	var oldhcp = MM_findObj(oldhcpfield).value;
	var full_round = true;
	if (htp != 0) {
		full_round = false;
	}
	calculateNewHcp(oldhcp,pbobj.value,newhcpfield,changefield,full_round);

	MM_findObj(totalpointsfieldname).value = pstobj.value;
	MM_findObj(showoldhcpfield).value = oldhcp ;

}
