function getOSYBR() {
	var title = "SYBR<sup>&reg;</sup>&nbsp;OpenArray<sup>&reg;</sup>&nbsp;Real-Time PCR Plates";
	var formatObj = findApproximateOpenSybrRecord(getExperimentInfo('nooftargets') - 1);
	var format = formatObj.get('concatenate');
	var partNumber = formatObj.get('partnumber');
	var noofgenes = formatObj.get('formatno');

	var accessperc = (Ext.get('accessoriesperc').dom.value).split('%')[0];

	var reqnoofunits = getExperimentInfo('noofsamples')
			* getExperimentInfo('noofsubarrays')
			/ formatObj.get('effectivesamplesperunit');
	var noofunits = reqnoofunits < formatObj.get('min') ? formatObj.get('min')
			: Math.ceil(reqnoofunits);

	var noofreactions = noofgenes * getExperimentInfo('noofsamples');
	var mvolume = 0;
	var mastermix = " ";
	var mnoofunits = 0;
	var volumeDiscount = 0;

	var discObj = managertable.findRecord('product', Ext.util.Format
			.trim(format));

	volumeDiscount = discObj.discounts().findRecord('volume', noofunits, 0,
			false, false, true).get('value');
	volumeDiscount = openarraydiscm == 0 ? volumeDiscount : openarraydiscm;

	var pricePerUnit = formatObj.regions().findRecord('region', 'NA').prices()
			.findRecord('countrycode', 'USD').get('value');

	var price = formatObj.regions().findRecord('region', 'NA').prices()
			.findRecord('countrycode', 'USD').get('value')
			* noofunits;
	var assaysCostWithVolDisc = price - (volumeDiscount / 100 * price);

	var assayCostPerReaction = assaysCostWithVolDisc / noofreactions;

	var openArray384WellSamplePlatesUnits = Math.ceil(formatObj
			.get('sampleplates')
			* reqnoofunits) < accessories.findRecord('product',
			'OpenArray® 384-well Sample Plates').get('min') ? accessories
			.findRecord('product', 'OpenArray® 384-well Sample Plates').get(
					'min') : Math.ceil(formatObj.get('sampleplates')
			* reqnoofunits);
	var acc1PartNumber = accessories.findRecord('product',
			'OpenArray® 384-well Sample Plates').get('partnumber');
	//var openArray384WellSamplePlatesCost = accessories.findRecord('product','OpenArray® 384-well Sample Plates').get('listprice')* openArray384WellSamplePlatesUnits;
	var openArray384WellSamplePlatesCost = pricelist.findRecord('partnumber', acc1PartNumber)
	.regions().findRecord('region', region + "-" + currency).get('price')
			* openArray384WellSamplePlatesUnits;
	
	

	var openArrayAccuFillSystemTipsUnits = Math.ceil((formatObj
			.get('tipsperunit') * reqnoofunits) % 10) < accessories.findRecord(
			'product', 'OpenArray® AccuFill® System Tips').get('min') ? accessories
			.findRecord('product', 'OpenArray® AccuFill® System Tips').get(
					'min')
			: Math.ceil((formatObj.get('tipsperunit') * reqnoofunits) % 10);

	//var openArrayAccuFillSystemTipsCost = accessories.findRecord('product','OpenArray® AccuFill® System Tips').get('listprice')* openArrayAccuFillSystemTipsUnits;
	
	var acc2PartNumber = accessories.findRecord('product','OpenArray® AccuFill® System Tips').get('partnumber');
			
	var openArrayAccuFillSystemTipsCost = pricelist.findRecord('partnumber', acc2PartNumber)
	.regions().findRecord('region', region + "-" + currency).get('price')
			* openArrayAccuFillSystemTipsUnits;
			
	

	var openArrayAccuFillSystemTips10PackUnits = Math.ceil(Math
			.floor((formatObj.get('tipsperunit') * reqnoofunits) / 10)) < accessories
			.findRecord('product',
					'OpenArray® AccuFill® System Tips, 10 pack').get('min') ? accessories
			.findRecord('product',
					'OpenArray® AccuFill® System Tips, 10 pack').get('min')
			: Math.ceil(Math
					.floor((formatObj.get('tipsperunit') * reqnoofunits) / 10));
	
	var acc3PartNumber = accessories.findRecord('product','OpenArray® AccuFill® System Tips, 10 pack').get('partnumber');
			
	/*var openArrayAccuFillSystemTips10PackCost = accessories.findRecord(
			'product', 'OpenArray® AccuFill® System Tips, 10 pack').get(
			'listprice')
			* openArrayAccuFillSystemTips10PackUnits;*/

	var openArrayAccuFillSystemTips10PackCost = pricelist.findRecord('partnumber', acc3PartNumber)
	.regions().findRecord('region', region + "-" + currency).get('price')
			* openArrayAccuFillSystemTips10PackUnits;

	var accessoriescost = openArray384WellSamplePlatesCost
			+ openArrayAccuFillSystemTipsCost
			+ openArrayAccuFillSystemTips10PackCost;

	var totalCostPreDisc = accessoriescost + price;

	var totalAccessoriescost = accessoriescost * (1 - (accessperc / 100));

	var accessoriesCostPerReaction = totalAccessoriescost / noofreactions;

	var totalCostPerReaction = assayCostPerReaction; //+ accessoriesCostPerReaction;

	// var openarraycost = formatObj.

	var totalCost = assaysCostWithVolDisc; //+ totalAccessoriescost;

	var totalDiscount = 100 - (totalCost * 100 / totalCostPreDisc);

	var assayCostPerSample = assaysCostWithVolDisc / getExperimentInfo('noofsamples');
	var acc1CostPerSample = openArray384WellSamplePlatesCost
			/ getExperimentInfo('noofsamples');
	var acc2CostPerSample = openArrayAccuFillSystemTipsCost
			/ getExperimentInfo('noofsamples');
	var acc3CostPerSample = openArrayAccuFillSystemTips10PackCost
			/ getExperimentInfo('noofsamples');
	var accessoriesCostPerSample = acc1CostPerSample + acc2CostPerSample
			+ acc3CostPerSample;
	var totalCostPerSample = assayCostPerSample;// + acc1CostPerSample	+ acc2CostPerSample + acc3CostPerSample;

	var sybr = {
		pno : 8,
		partnumber : partNumber,
		title : title,
		format : format.replace(/�/gi, '<sup>&reg;</sup>&nbsp;'),
		noofunits : noofunits,
		noofreactions : noofreactions,
		mastermix : mastermix.replace(/�/gi, '<sup>&reg;</sup>&nbsp;'),
		mnoofunits : 0,
		totalcost : roundNumber(totalCost, 2),
		volumediscount : volumeDiscount,
		mvolumediscount : 0,
		assayscost : roundNumber(price, 2),
		assayscostperunit : roundNumber(pricePerUnit, 2),
		assayscostwithvoldisc : assaysCostWithVolDisc,
		accessoriescostperreaction : roundNumber(accessoriesCostPerReaction, 2),
		mastermixvol : 0,
		mastermixcostwithdisc: 0,
		mastermixcostperunit : 0,
		mastermixcostpredisc : 0,
		mastermixcost : 0,
		noofhours : 0,
		reorderingcost : 0,
		additionalmastermix : 0,
		additionalmastermixcost : 0,
		additionallabourcost : 0,
		optimizedcost : 0,
		assaycostperreaction : roundNumber(assayCostPerReaction, 2),
		mastermixcostperreaction : 0,
		optimizationcostperreaction : 0,
		totalcostperreaction : roundNumber(totalCostPerReaction, 2),
		producturl : '',
		openarray384wellsampleplatescost : openArray384WellSamplePlatesCost,
		openarrayaccufillsystemtipscost : openArrayAccuFillSystemTipsCost,
		openarrayaccufillsystemtips10packcost : openArrayAccuFillSystemTips10PackCost,
		openarray384wellsampleplatesunits : openArray384WellSamplePlatesUnits,
		openarrayaccufillsystemtipsunits : openArrayAccuFillSystemTipsUnits,
		openarrayaccufillsystemtips10packunits : openArrayAccuFillSystemTips10PackUnits,
		mastermixunits : mnoofunits,
		totalcostpersample : roundNumber(totalCostPerSample, 2),
		accessoriescost : totalAccessoriescost,
		accessoriescost : roundNumber(accessoriescost, 2),
		accessoriescostwithdisc : roundNumber(totalAccessoriescost, 2),
		assaycostpersample : roundNumber(assayCostPerSample, 2),
		accessoriescostpersample : roundNumber(accessoriesCostPerSample, 2),
		mmxcostpersample : 0,
		totalcostpredisc : roundNumber(totalCostPreDisc, 2),
		totaldiscount : roundNumber(totalDiscount, 2),
		accessory1partnumber : acc1PartNumber,
		accessory2partnumber : acc2PartNumber,
		accessory3partnumber : acc3PartNumber,
		accessoriesdisc : accessperc,
		reqnoofunits : reqnoofunits,
		type : 'openarray-custom',
		fnName:'getOSYBR'

	};
	return sybr;

}

function findApproximateOpenSybrRecord(value) {
	var record = null;
	var name = "SYBR® OpenArray® Real-Time PCR Plates, Custom Format";
	var prevRecord = null;
	if (value < 18) {
		return openArray.findRecord('concatenate', name + '  18');
	} else if (value > 224) {
		return openArray.findRecord('concatenate', name + ' 224');
	} else {
		openArray.each(function(e) {
			if (e.get('concatenate').indexOf(name) != -1
					&& e.get('formatno') == value) {
				record = e;
				return false;
			} else if (e.get('concatenate').indexOf(name) != -1
					&& e.get('formatno') > value) {
				if (prevRecord != null && prevRecord >= value)
					record = prevRecord;
				else
					record = e;
				return false;
			}
			prevRecord = e;
		});
		return record;
	}
}