/**------------------------------------------------------------------------
 * Set of function and classes which deal with bond yield curves data 
 *
 * Dependencies:
 *
 * Author: 
 *  Bartlomiej.Pawlowski@swx.com
 *
 * @version $Id: yield_curves_data_utils.js,v 1.1 2009/08/11 15:44:42 ssk Exp $
 *
 *-----------------------------------------------------------------------*/


/**
 * Class provides various utility methods for yield curves data sets
 */
function YieldDataUtils() {
    
    /**
     * @param yieldData (hash) { "1Y" : 1.22, "2Y" : 2.35, ...... }
     * @return (hash) min and max yield values { min: xx, max: xx }
     */
    this.getMinMax = function(yieldData) {

        var maxYield = 0;
        var minYield = 0;
        var val = 0;
        var valsAssigned = false;
        for ( var term  in yieldData ) {
            val = yieldData[term];
            if ( ! valsAssigned ) {
                maxYield = minYield = val;
                valsAssigned = true;
            }
            if ( maxYield < val )
                maxYield = val;
            if ( minYield > val )
                minYield = val;
        }

        return { min: minYield, max: maxYield };
    }

    /**
     * Find the min and max value in all data set
     * @param dataSets (array of hashes) see yieldData in getMinMax method
     * @return (hash) { min: xx, max: xx }
     */
    this.getMinMaxRange = function(dataSets) {
        var minMaxTemp, minMax = { min: 0, max: 0 };

        if ( dataSets.length == 0 )
            return { min: 0, max: 3 };


        for ( var i = 0; i < dataSets.length; i++ ) {
            minMaxTemp = this.getMinMax(dataSets[i]);
            if ( i == 0 ) {
                minMax.min = minMaxTemp.min;
                minMax.max = minMaxTemp.max;
            }
            if ( minMax.min > minMaxTemp.min )
                minMax.min = minMaxTemp.min;
            if ( minMax.max < minMaxTemp.max )
                minMax.max = minMaxTemp.max;
        }
        return minMax;
    }
}

