/**
 * Returns all the values from FusionCharts data-xml in form of Array
 * @id FusionChartsGetValues
 *
 * @return Array
 * @type Array
 *
 * @code
 * getValuesFromFusionChartsXML(sourceXML);
 *
 * @param sourceXML {String}
 * @param forceSingleSeries {Boolean}
 *
 * @note
 * The function returns double-dimension array for multi-series XML,
 * but can be forced to return a single-dimension array
 * forceSingleSeries=true
 */
getValuesFromFusionChartsXML = function(sourceXML, forceSingleSeries) {
    // validate innput argument type
    if(typeof sourceXML != 'string') {
        throw "ArgumentException() :: sourceXML is not string.";
    }
 
    var r = []; // array to store results
 
    // in case of multi-series, recurse
	var d = sourceXML.match(/<dataset[\s\S]*?<\/dataset>/ig);
    if(!forceSingleSeries && d && d.length) {
        while(d && d.length){
            r.push(getValuesFromFusionChartsXML(d.pop(), true));
        }
        return r;
    }
 
    // parse set elements to retrieve values
    var a = sourceXML.replace(/<set .*?value=\'(.*?)\'|<set .*?value=\"(.*?)\"/ig,
       function($1, $2, $3) { r.push(parseInt($2 || $3)); });
   return r;
};

