var unitTokens = new Array( "s", "m", "hr" );
var longUnits = new Array( "secs", "mins", "hrs" );
var inUnitsIndex = -1;
var outUnitsIndex = -1;
var conversionMatrix = new Array(3);
conversionMatrix[0] = new Array(3);
conversionMatrix[1] = new Array(3);
conversionMatrix[2] = new Array(3);
conversionMatrix[0][0] = "*1";
conversionMatrix[0][1] = "/60";
conversionMatrix[0][2] = "/3600";
conversionMatrix[1][0] = "*60";
conversionMatrix[1][1] = "*1";
conversionMatrix[1][2] = "/60";
conversionMatrix[2][0] = "*3600";
conversionMatrix[2][1] = "*60";
conversionMatrix[2][2] = "*1";

// *************************************************************************************************
// * This function accepts parameters for base and required units and the duration to convert      *
// * Returns the converted duration appended with unit identifier to indicate new unit designation *
// *************************************************************************************************
function durationConversion( inUnits, outUnits, duration ){

	if( inUnits == "" || outUnits == "" || duration == ""){
		return "";
	}
	else{
		// loop and store the index for the required units
		for( var i = 0 ; i < unitTokens.length ; i++){
			if( inUnits == unitTokens[i])
				inUnitsIndex = i;
			
			if( outUnits == unitTokens[i])
				outUnitsIndex = i;
		}
		// perform the conversion
		tempResult = eval(duration + conversionMatrix[inUnitsIndex][outUnitsIndex]);
		if( outUnits == "hr" && tempResult < 1 ){
			// show results in minutes instead
			tempResult = tempResult * 60;
			formattedResult = tempResult + " mins";
		}
		else{
			if(eval(duration + conversionMatrix[inUnitsIndex][outUnitsIndex]) > 1){
				formattedResult = eval(duration + conversionMatrix[inUnitsIndex][outUnitsIndex]) + " " + outUnits + "s";			
			}
			else{
				formattedResult = eval(duration + conversionMatrix[inUnitsIndex][outUnitsIndex]) + " " + outUnits;
			}
		}
		return formattedResult;
	}
}
