long baseTime = InventoryChartBaseCalendar.getBaseTime();
    public void setProjectionValues() {	if(inventory == null) {	    xvalues = new double[nSeries][0];	    yvalues = new double[nSeries][0];	    projYValues = new double[nSeries][0];	    return;	}	InventoryScheduleHeader schedHeader = (InventoryScheduleHeader)	    inventory.getSchedules().get(projScheduleName);	ArrayList projections = schedHeader.getSchedule();	long baseTime = InventoryChartBaseCalendar.getBaseTime();	schedHeader = (InventoryScheduleHeader) 	    inventory.getSchedules().get(projARScheduleName);	ArrayList projARs = schedHeader.getSchedule();	schedHeader = (InventoryScheduleHeader)	    inventory.getSchedules().get(reqScheduleName);	ArrayList requisitions = schedHeader.getSchedule();	long maxReqEndTime=0;	if(resupply) {	    for(int i=0; i < requisitions.size(); i++) {		InventoryTask task = (InventoryTask) requisitions.get(i);		long endTime = task.getEndTime();		maxReqEndTime = Math.max(endTime,maxReqEndTime);	    }	}   	computeCriticalNValues();	xvalues = new double[nSeries][nValues];	yvalues = new double[nSeries][nValues];	projYValues = new double[nSeries][nValues];	//initZeroYVal(nValues);	for (int i = 0; i < nSeries; i++) {	    for (int j = 0; j < nValues; j++) {		xvalues[i][j] = minDay + (j * bucketDays);		yvalues[i][j] = 0;		projYValues[i][j] = 0;	    }	}	//Explode into dailys	ArrayList dailys = new ArrayList();	ArrayList dailyARs = new ArrayList();	for(int i=0; i < projections.size(); i++) {	    InventoryProjTask projTask = (InventoryProjTask) projections.get(i);	    dailys.addAll(projTask.explodeToDaily());	}	for(int i=0; i < projARs.size(); i++) {	    InventoryProjAR projAR = (InventoryProjAR) projARs.get(i);	    dailyARs.addAll(projAR.explodeToDaily());	}	for(int i=0; i < dailys.size() ; i++) {	    InventoryProjTask task = (InventoryProjTask) dailys.get(i);	    long endTime = task.getEndTime();	    long startTime = task.getStartTime();	    if(!resupply ||	       (startTime >= (maxReqEndTime + MILLIS_IN_DAY))) {		int endDay = (int) ((endTime - baseTime) / MILLIS_IN_DAY);		int graphDay = (endDay - minDay)/bucketDays;		if(graphDay < 0) 		    logger.error("Array out of bounds alright.  The Graphday is negative");		if(graphDay < nValues)		    projYValues[0][graphDay]+=task.getDailyRate();		else {		    if(logger.isInfoEnabled()) {			logger.info("ProjectionsChartDataModel:Index Out of bounds on the tasks - falling off the end. Length " + nValues + " and graph day is: " + graphDay);		    }		}	    }	}	    	for(int i=0; i < dailyARs.size() ; i++) {	    InventoryProjAR ar = (InventoryProjAR) dailyARs.get(i);	    if(ar.isSuccess()) {		long endTime = ar.getEndTime();		long startTime = ar.getStartTime();		if(!resupply ||		   (startTime >= (maxReqEndTime + MILLIS_IN_DAY))) {		    int endDay = (int) ((endTime - baseTime) / MILLIS_IN_DAY);		    int graphDay = (endDay - minDay)/bucketDays;		    if(graphDay < 0) 			logger.error("Array out of bounds alright.  The Graphday is negative");		    if(graphDay < nValues)			projYValues[1][graphDay]+=ar.getDailyRate();		    else {			if(logger.isInfoEnabled()) {			    logger.info("ProjectionsChartDataModel:Index Out of bounds on the ARs - falling off the end. Length " + nValues + " and graph day is: " + graphDay);			}		    }		}	    	    }	}	reqDataModel.resetInventory(inventory);	for (int i = 0; i < nSeries; i++) {	    for (int j = 0; j < nValues; j++) {		if(xvalues[i][j] == reqDataModel.getXSeries(i)[j]) {		    yvalues[i][j] = projYValues[i][j] + 			reqDataModel.getYSeries(i)[j] ;		}		else {		    throw new RuntimeException("ProjectionsChartDataModel:Accccch!  Mis-matching dates between two views...");		}	    }	}	    }