$(function(){
	var minAmount = $('#minimumPurchasePrice').val();
	var gallonsToCCF = 1/748.051948;
	buy.initialize(minAmount, $('#gallonsToCerts').val(), 1, gallonsToCCF);
	
    
});

buy = {
	wrcPrefix:' WRCs',
	certsToGallons:0,
	dollarsToCerts:0,
	gallonsToCCF:0,
	minAmount:0,
	nationalAverage:0,
	focusInput:null,
	initialize:function(mA, cTg, dTc, gTc)
	{
		this.dollarsToCerts = dTc;
		this.certsToGallons = cTg;
		this.gallonsToCCF = gTc;
		this.minAmount = mA;
		this.nationalAverage = $('#nationalAverage').val();
		$('#minAmountMsg').html(this.minAmount);
		this.updateGallons(this.nationalAverage);
		//this.setCerts(this.minAmount);
		//this.setGallonsByDollars(this.minAmount);
		//this.setCcfsByDollars(this.minAmount);
		
		//set tooltip params for ccf popup
		$("#ccf_tt_link").tooltip({
			tip: '#ccf_tt',
			predelay: 250,
			delay: 500,
			// tweak the position 
			relative: true,
			offset: [0, -80],
			// use "slide" effect 
			effect: 'slide',
			bounce: true
		});
		
		$('#dollarInput').blur(buy.dollarBlur);
		$('#dollarInput').focus(buy.focus);
		$('#dollarCertInput').blur(buy.certBlur);
		$('#dollarCertInput').focus(buy.focus);
		
		$('#gallonInput').blur(buy.gallonBlur);
		$('#gallonInput').focus(buy.focus);
		$('#gallonCertInput').blur(buy.certBlur);
		$('#gallonCertInput').focus(buy.focus);
		
		$('#ccfInput').blur(buy.ccfBlur);
		$('#ccfInput').focus(buy.focus);
		$('#ccfCertInput').blur(buy.certBlur);
		$('#ccfCertInput').focus(buy.focus);
		
		$('#dollar_btn_add').click(buy.submitCerts);
		$('#nationalAverageRb').click(buy.setToNationalAvg);
		
		$('#overlay_link').hover(buy.showItemOverlay, buy.hideItemOverlay);
		$('#items_popup').mouseout(buy.hideItemOverlay);
		/*$('#wrcForm').submit(function(e)
		{
			
			buy.focusInput.blur();
			
			return false;
		});*/
	},
	
	showItemOverlay:function(e){
		$('#items_popup').fadeIn(500);
	},
	hideItemOverlay:function(e){
		if ($(this).attr('id') == 'overlay_link') {
			if (!$(e.relatedTarget).closest('#items_popup')) {
				$('#items_popup').fadeOut(500);
			}
		}
		else
		{
			$('#items_popup').fadeOut(500);
		}
	},
	
	setToNationalAvg:function(){
		var checked = $('#nationalAverageRb').attr('checked');
		if($('#nationalAverageRb').attr('checked'))
		{
			buy.setGallons(buy.nationalAverage);
			buy.gallonBlur(null);
		}
	},
	
	submitCerts:function(){
		buy.focusInput.blur();
		return true;
	},
	
	/**************** DOLLARS and CERTS ********************/
	dollarBlur:function(event)
	{		
		var dollars = buy.getDollars();
		buy.updateDollars(dollars);
	},
	
	certBlur:function(event)
	{
		var certs = $(this).val();
		certs = certs.replace(/[^0-9.]/g, "");
		buy.updateCerts(certs);
	
	},
	gallonBlur:function(event)
	{
		var gallons = buy.getGallons();
		buy.updateGallons(gallons);
	
	},
	ccfBlur:function(event)
	{
		var ccfs = buy.getCCF();
		buy.updateCCF(ccfs);
	},
	focus:function(event)
	{
		buy.focusInput = $(this);
		var value = $(this).val();
		value = value.replace(/[^0-9.]/g, "");
		$(this).val(value);
	},
	
	/*************** UPDATERS *******************/
	updateDollars:function(dollars)
	{
		if(parseInt(dollars) < parseInt(buy.minAmount))
		{
			dollars = buy.minAmount;
		}
		var certs = dollars*buy.dollarsToCerts;
		var gallons = certs*buy.certsToGallons;
		var ccfs = gallons*buy.gallonsToCCF;
		buy.setDollars(dollars);
		buy.setCerts(certs);
		buy.setGallons(gallons);
		buy.setCCF(ccfs);
	},
	updateCerts:function(certs)
	{
		if(certs < buy.minAmount/buy.dollarsToCerts)
		{
			certs = buy.minAmount/buy.dollarsToCerts;
		}
		var dollars = certs/buy.dollarsToCerts;
		var gallons = certs*buy.certsToGallons;
		var ccfs = gallons*buy.gallonsToCCF;
		buy.setDollars(dollars);
		buy.setCerts(certs);
		buy.setGallons(gallons);
		buy.setCCF(ccfs);
	},
	updateGallons:function(gallons)
	{
		if(gallons < (buy.minAmount/buy.dollarsToCerts)*buy.certsToGallons)
		{
			gallons = (buy.minAmount/buy.dollarsToCerts)*buy.certsToGallons;
		}
		var certs = gallons/buy.certsToGallons;
		var dollars = certs/buy.dollarsToCerts;
		var ccfs = gallons*buy.gallonsToCCF;
		buy.setDollars(dollars);
		buy.setCerts(certs);
		buy.setGallons(gallons);
		buy.setCCF(ccfs);
	},
	updateCCF:function(ccfs)
	{
		var gallons = Math.round(ccfs/buy.gallonsToCCF);
		var certs = gallons/buy.certsToGallons;
		var dollars = certs/buy.dollarsToCerts;
		buy.setDollars(dollars);
		buy.setCerts(certs);
		buy.setGallons(gallons);
		buy.setCCF(ccfs);
	},
	
	
	/**************** GETTERS AND SETTERS ********************/
	setCredits:function(credits)
	{
		$('#credit_label').text(credits);
	},
	getDollars:function()
	{
		var value = $('#dollarInput').val();
		value = value.replace(/[^0-9.]/g, "");
		return value;
	},
	setDollars:function(dollars)
	{
		$("#dollarInput").val(dollars);
		buy.dollarFormat($("#dollarInput"));
		$("#dollarMaster").html($("#dollarInput").val());
		
		$('#amount').val(dollars);
		
		jQuery.get('/water/action/ajax_convservation_credits/'+dollars, null, function(data){
			buy.setCredits(data);
		}, 'text');
	},
	getCerts:function()
	{
		var value = $('#dollarCertInput').val();
		value = value.replace(/[^0-9.]/g, "");
		return value;
	},
	setCerts:function(certs)
	{
		$("#dollarCertInput").val(certs);
		buy.certFormat($("#dollarCertInput"));
		
		$("#gallonCertInput").val(certs);
		buy.certFormat($("#gallonCertInput"));
		
		$("#ccfCertInput").val(certs);
		
		
		buy.certFormat($("#ccfCertInput"));
	},
	getGallons:function()
	{
		var value = $('#gallonInput').val();
		value = value.replace(/[^0-9.]/g, "");
		return value;
	},
	setGallons:function(gallons)
	{
		$("#gallonInput").val(gallons);
		buy.gallonFormat($("#gallonInput"));
		
	},
	getCCF:function()
	{
		var value = $('#ccfInput').val();
		value = value.replace(/[^0-9.]/g, "");
		return value;
	},
	setCCF:function(ccfs)
	{
		$("#ccfInput").val(ccfs);
		buy.ccfFormat($("#ccfInput"));
		
	},
	
	
	/**************** FORMATTERS ********************/
	dollarFormat:function(element)
	{
		
		element.priceFormat({prefix:'$',centsLimit:2})
	},
	certFormat:function(element)
	{
		certs = element.val().replace(/[^0-9.]/g, "");
		element.attr('value', certs+buy.wrcPrefix)
	},
	gallonFormat:function(element)
	{
		gallons = element.val().replace(/[^0-9.]/g, "");
		gallons = buy.applyThousandsComma(gallons);
		element.attr('value', gallons+' g');
	},
	ccfFormat:function(element)
	{
		ccfs = element.val().replace(/[^0-9.]/g, "");
		ccfs = buy.applyPrecision(ccfs, 3);
		element.attr('value', ccfs+' CCFs')
	},
	applyPrecision:function(number, precision)
	{
		var numAr = number.toString().split('.');
		if(numAr.length > 1)
		{
			var intVal = numAr[0];
			var decVal = numAr[1];
			decVal = decVal.substr(0,precision);
			number = intVal + '.' + decVal;
		}
		return number;
	},
	applyThousandsComma:function(number)
	{
		var numAr = number.toString().split('.');
		var integerVal = numAr[0];
		if(numAr.length > 1)
		{
			var decVal = numAr[1];
		}
		else
		{
			var decVal = "";
		}
		var thousandsFormatted = "";
		var thousandsCount = 0;
		for (var j=integerVal.length;j>0;j--) {
			char = integerVal.substr(j-1,1);
			thousandsCount++;
			if (thousandsCount%3==0) char = ','+char;
			thousandsFormatted = char+thousandsFormatted;
		}
		if (thousandsFormatted.substr(0,1)==',') thousandsFormatted = thousandsFormatted.substring(1,thousandsFormatted.length);
		if(decVal != "")
		{
			thousandsFormatted += '.'+decVal;
		}
		return thousandsFormatted;
	}
}

