function in_array(needle, haystack, strict) {
    var found = false, key, strict = !!strict;
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
    return found;
}
function in_array_keys(needle, haystack, strict) {
    var found = false, key, strict = !!strict;
    for (key in haystack) {
        if ((strict && key === needle) || (!strict && key == needle)) {
            found = true;
            break;
        }
    }
    return found;
}

$(function() {
	$(".language1").click(function() {
		$(".begin").hide();
		$(".language1_expanded").show();
		$(".language1 input").attr('value','').blur();
	});
	$(".dropdown").hover(function() {
		$(this).addClass('over');
	},function() {
		$(this).removeClass('over');
	}).click(function() {
		var id		= $(this).attr('id');
	});

	var maxAllowedPage = 1;
	var metric = false;
	var waterScale;
	var energyScale;
	var emissionsScale;
	
	var udv_quantity = '';
	var udv_state_country = '';
	var udv_viewed_water = 0;
	var udv_viewed_energy = 0;
	var udv_viewed_emissions = 0;
	var udv_times_viewed_print = 0;
	
	$("#submitstep1").hide();
	$("#submitstep2").hide();
	$("#submitstep3").hide();
	$(".secondary").css('opacity',0);
	$(".secondary").hide();
	$(".measurement2").hide();
	$(".state2").hide();
	var waterUsedMillicare, waterUsedHWE, powerUsedMillicare, powerUsedHWE, energyUsedMillicare, energyUsedHWE;

	// STEP 0 FUNCTIONS
	function move0to1() {
		$("#step1").show();
		$("#step0").animate({left: -800, opacity: 0}, 'slow');
		$("#step1").animate({left: 0, opacity: 1}, 'slow', function() {
			$("#step0").hide();
		});
		pageTracker._setVar(udv_quantity+':'+udv_state_country+':'+udv_viewed_water+':'+udv_viewed_energy+':'+udv_viewed_emissions+':'+udv_times_viewed_print);
		pageTracker._trackPageview('/resourcecalculator/quantity');
		return false;
	}
	
	$("#step0 .next").click(function() {
		move0to1();
		pageTracker._trackPageview('/resourcecalculator/global/forward');
		return false;
	});


	// STEP 1 FUNCTIONS
	function move1to0() {
		$("#step0").show();
		$("#step1").animate({left: 800, opacity: 0}, 'slow', function() {
			$("#step1").hide();
		});
		$("#step0").animate({left: 0, opacity: 1}, 'slow');
		pageTracker._trackPageview('/resourcecalculator');
		return false;
	}
	$("#step1 .prev").click(function() {
		move1to0();
		pageTracker._trackPageview('/resourcecalculator/global/back');
	});
	function move1to2() {
		$("#step2").show();
		$("#step1").animate({left: -800, opacity: 0}, 'slow');
		$("#step2").animate({left: 0, opacity: 1}, 'slow', function() {
			$("#step1").hide();
		});
		pageTracker._setVar(udv_quantity+':'+udv_state_country+':'+udv_viewed_water+':'+udv_viewed_energy+':'+udv_viewed_emissions+':'+udv_times_viewed_print);
		pageTracker._trackPageview('/resourcecalculator/quantity');
		if($("input[name='state']")[0].autocompleter) {
			$("input[name='state']")[0].autocompleter.flushCache();
		}
		if($("input[name='measurement']:checked").val() == 'metric') {
			$("input[name='state']").autocomplete(null,{resultsClass:'state2', onItemSelect:selectitem, selectFirst:1, forceUS: 0},countries);
		} else {
			$("input[name='state']").autocomplete(null,{resultsClass:'state2', onItemSelect:selectitem, selectFirst:1, forceUS: 1},states);
		}

		return false;
	}
	$("#step1 .next").click(function() {
		if(maxAllowedPage >= 2) {
			move1to2();
			pageTracker._trackPageview('/resourcecalculator/global/forward');
		}
	});
	$("#submitstep1").click(function() {
		name		= $("input[name='name']").val();
		measurement	= $("input[name='measurement']:checked").val();

		if((maxAllowedPage >= 2) && (name != '' && name != 'Inserir nome' && (measurement == 'standard' || measurement == 'metric'))) {
			move1to2();
		}
		return false;
	});
	$("#step1 input").click(function() {
		$(this).change();
	});
	$("#step1 input").change(function() {
		name		= $("input[name='name']").val();
		measurement	= $("input[name='measurement']:checked").val();
		if(name != '' && name != 'Inserir nome' && (measurement == 'metric' || measurement == 'standard')) {
			$("#submitstep1").show();
			$("#step1 .next").addClass('active');
			if(maxAllowedPage == 1)
				maxAllowedPage = 2;
		} else {
			$("#submitstep1").hide();
			$("#step1 .next").removeClass('active');
			maxAllowedPage = 1;
		}
		$("#step3 h1").text(name);
		$("#step2 h1").text(name);

	});
	$("input[name='name']").focus(function() {
		if($(this).val() == 'Inserir nome') $(this).val('');
	}).blur(function() {
		if($(this).val() == '') $(this).val('Inserir nome');
	});
	$("input[name='measurement1']").focus(function() {
		//$(this).blur();
		$(this).parent().remove();
		$(".measurement2").show().focus();
	});
	$("input[name='measurement']").change(function() {
		if($(this).val() == 'metric') {
			metric = true;
			if($("input[name='sqft']").val() == 'Nº. de pés quadrados') $("input[name='sqft']").val('Número de m²');
			$("input[name='state']").val('país');
			$("#step2 h2.box").val("Enter the quantity of carpet to be cleaned and your country to see the sustainable benefits of using MilliCare.");
			$("#step2 input").change();
		} else {
			metric = false;
			if($("input[name='sqft']").val() == 'Número de m²') $("input[name='sqft']").val('Nº. de pés quadrados');
			$("#step2 h2.box").val("Enter the quantity of carpet to be cleaned and your state to see the sustainable benefits of using MilliCare.");
			$("input[name='state']").val('Estado');
			$("#step2 input").change();
		}
	});

	$("form#step0form").submit(function() {
		$(".language1").click();
		return false;
	});

	$("form#step1form").submit(function() {
		$("#submitstep1").click();
		return false;
	});

	$("form[action='step3.html']").submit(function() {
		$("#submitstep2").click();
		return false;
	});

	// STEP 2 FUNCTIONS
	function move2to1() {
		$("#step1").show();
		$("#step2").animate({left: 800, opacity: 0}, 'slow', function() {
			$("#step2").hide();
		});
		$("#step1").animate({left: 0, opacity: 1}, 'slow');
		pageTracker._trackPageview('/resourcecalculator');
		return false;
	}
	function move2to3() {
		sqft = $("input[name='sqft']").val();
		sqft = parseInt(sqft.replace(/\,/g,''));
		udv_quantity = sqft;
		state = $("input[name='state']").val();
		if(metric) {
			sqft_calc = sqft * 10.76391;
			udv_state_country = countries[state][2];
		} else {
			udv_state_country = states[state][2];				
			sqft_calc = sqft;
		}
		waterUsedMillicare		= parseInt(sqft_calc * .00038);
		// waterUsedHWE			= parseInt(sqft_calc * .06727);
		waterUsedHWE			= parseInt(sqft_calc * .043399);
		if(metric) {
			energyUsedMillicare		= sqft * .0775;
			// energyUsedHWE			= sqft * .32495;
			energyUsedHWE			= sqft * .322838;
			energySavings			= Math.round((energyUsedHWE - energyUsedMillicare) / 87.84);
			emissionsUsedMillicare	= energyUsedMillicare * countries[state][1] / 3.6;
			emissionsUsedHWE		= energyUsedHWE * countries[state][1] / 3.6;
		} else {
			//energyUsedMillicare		= sqft_calc * .002;
			//energyUsedHWE			= sqft_calc * .0083857;
			energyUsedMillicare		= sqft_calc * .00199;
			energyUsedHWE			= sqft_calc * .00830796;
			energySavings			= Math.round((energyUsedHWE - energyUsedMillicare) / 24.4);
			emissionsUsedMillicare	= energyUsedMillicare * states[state][1];
			emissionsUsedHWE		= energyUsedHWE * states[state][1];
		}
		
		waterSavings 			= Math.round((waterUsedHWE - waterUsedMillicare) / 20);
		emissionsReduction		= emissionsUsedHWE - emissionsUsedMillicare;
		
		if(metric) {
			emissionsReduction = Math.round(emissionsReduction * 419.80086);
			$("#emissions p").text('litros da gasolina');
		} else {
			emissionsReduction = Math.round(emissionsReduction * 110.9);
			$("#emissions p").text('galões de gasolina');
		}

		$("#water h3").text(waterSavings);
		$("#energy h3").text(energySavings);
		$("#emissions h3").text(emissionsReduction);

		$("#step3").show();
		$("#step2").animate({left: -800, opacity: 0}, 'slow');
		$("#step3").animate({opacity: 1, left: 0}, 'slow', function() {
			$("#step2").hide();
			$("#step3").animate({opacity: 1}, 1000, function() {
				$("#icon1").animate({top:-168},1500,function() {
					$("#icon2").animate({top:-168},1500,function() {
						$("#icon3").animate({top:-168},1500);
					});
				});
			});
		});

		if(metric) {
			waterUsedHWE = waterUsedHWE * 3.7854118;
			waterUsedMillicare = waterUsedMillicare * 3.7854118;
		}

		waterScale = waterUsedHWE / 8;
		if(waterScale <= 10) {
			waterScale = Math.ceil(waterScale);
		} else if(waterScale > 10 && waterScale <= 100) {
			waterScale = 10 * Math.ceil(waterScale / 10);
		} else if(waterScale > 100 && waterScale <= 1000) {
			waterScale = 50 * Math.ceil(waterScale / 50 );
		} else if(waterScale > 1000) {
			waterScale = 100 * Math.ceil(waterScale / 100 );
		}
		
		energyScale = energyUsedHWE / 8;
		if(energyScale <= 10) {
			energyScale = Math.ceil(energyScale);
		} else if(energyScale > 10 && energyScale <= 100) {
			energyScale = 10 * Math.ceil(energyScale / 10);
		} else if(energyScale > 100 && energyScale <= 1000) {
			energyScale = 50 * Math.ceil(energyScale / 50 );
		} else if(energyScale > 1000) {
			energyScale = 100 * Math.ceil(energyScale / 100 );
		}

		emissionsScale = emissionsUsedHWE / 8;
		if(emissionsScale <= 0.1) {
			emissionsScale = Math.ceil(100 * emissionsScale) / 100;
		} else if(emissionsScale > 0.1 && emissionsScale <= 1) {
			emissionsScale = Math.ceil(10 * emissionsScale) / 10;
		} else if(emissionsScale > 1 && emissionsScale <= 10) {
			emissionsScale = Math.ceil(emissionsScale);
		} else if(emissionsScale > 10 && emissionsScale <= 100)  {
			emissionsScale = 10 * Math.ceil(emissionsScale / 10);
		} else if(emissionsScale > 100 && emissionsScale <= 1000) {
			emissionsScale = 50 * Math.ceil(emissionsScale / 50 );
		} else if(emissionsScale > 1000) {
			emissionsScale = 100 * Math.ceil(emissionsScale / 100 );
		}
		pageTracker._trackPageview('/resourcecalculator/savings');
		return false;
	}
	$("#step2 .prev").click(function() {
		move2to1();
		pageTracker._setVar(udv_quantity+':'+udv_state_country+':'+udv_viewed_water+':'+udv_viewed_energy+':'+udv_viewed_emissions+':'+udv_times_viewed_print);
		pageTracker._trackPageview('/resourcecalculator/global/back');
	});
	$("#step2 .next").click(function() {
		if(maxAllowedPage >= 3) {
			move2to3();
			pageTracker._trackPageview('/resourcecalculator/global/forward');
		}
	});
	$("#submitstep2").click(function() {
		if((!metric && !in_array_keys($("input[name='state']").val(),states)) || (metric && !in_array_keys($("input[name='state']").val(),countries))) {
			if(metric) $("input[name='state']").val('país');
			else $("input[name='state']").val('Estado');
			return false;
		}
		if(maxAllowedPage >= 3) {
			move2to3();
		}
		return false;
	});
	$("input[name='sqft']").focus(function() {
		if($(this).val() == 'Nº. de pés quadrados' || $(this).val() == 'Número de m²') $(this).val('');
	}).blur(function() {
		if($(this).val() == '') {
			if(metric) $(this).val('Número de m²');
			else $(this).val('Nº. de pés quadrados');
		}
	});
	
	$("input[name='state']").focus(function() {
		if($(this).val() == 'Estado' || $(this).val() == 'país') $(this).val('');
	}).blur(function() {
		if($(this).val() == '') {
			if(metric) $(this).val('país');
			else $(this).val('Estado');
		} else if((!metric && !in_array_keys($(this).val(),states)) || (metric && !in_array_keys($(this).val(),countries))) {
			$("input[name='state']").val('');
			return false;
		}
	});

	$("#step2 input").change(function() {
		sqft		= $("input[name='sqft']");
		state		= $("input[name='state']");
		name		= $("input[name='name']").val();
		if(metric) units = "metros quadrados";
		else units = "pés quadrados";
		
		if(sqft.val() != '' && sqft.val() != 'Número de m²' && sqft.val() != 'Nº. de pés quadrados' && state.val() != 'Estado' && state.val() != '') {
			if(state.val() == 'US Average') {
				$("#step3 .box").text('Observe a economia de recursos obtida quando você escolhe a MilliCare para limpar seu carpete de '+sqft.val()+' '+units+' em os E.U.');
				$("#step4 .detail").text('Baseado na limpeza de '+sqft.val()+' '+units+' de carpete na ??? los EEUU por '+name);
			} else {
				$("#step3 .box").text('Observe a economia de recursos obtida quando você escolhe a MilliCare para limpar seu carpete de '+sqft.val()+' '+units+' na '+state.val()+'.');
				$("#step4 .detail").text('Baseado na limpeza de '+sqft.val()+' '+units+' de carpete na '+state.val()+' por '+name);
			}
			$("#submitstep2").show();
			$("#step2 .next").addClass('active');
			maxAllowedPage = 3;
		} else {
			$("#submitstep2").hide();
			$("#step2 .next").removeClass('active');
			maxAllowedPage = 2;
		}
	});

	function selectitem(li) {
		$("input[name='state']").change();
	}

	// STEP 3 FUNCTIONS
	function move3to2() {
		$("#step2").show();
		$("#step3").animate({left: 800, opacity: 0}, 'slow', function() {
			$("#step3").hide();
		});
		$("#step2").animate({left: 0, opacity: 1}, 'slow');
		pageTracker._trackPageview('/resourcecalculator/quantity');
		return false;
	}
	function move3to4() {
		$("#step4").show();
		$("#step3").animate({left: -800, opacity: 0}, 'slow');
		$("#step4").animate({left: 0, opacity: 1}, 'slow', function() {
			$("#step3").hide();
		});
		return false;
	}
	$("#step3 .prev").click(function() {
		move3to2();
		pageTracker._trackPageview('/resourcecalculator/global/back');
	});
	$("#step3 .next").click(function() {
		if(maxAllowedPage >= 3) {
			move3to4();
			pageTracker._trackPageview('/resourcecalculator/global/forward');
		}
	});
	$("#viewwater").click(function() {
		udv_viewed_water = 1;
		pageTracker._setVar(udv_quantity+':'+udv_state_country+':'+udv_viewed_water+':'+udv_viewed_energy+':'+udv_viewed_emissions+':'+udv_times_viewed_print);
		if(metric) {
			units = 'Liters';
		} else {
			units = 'galões';
		}
		$("#savings_logo").attr('src','images/water_icon.jpg');
		$("#chart ul").html('<li>'+waterScale*8+'</li>'+'<li>'+waterScale*7+'</li>'+'<li>'+waterScale*6+'</li>'+'<li>'+waterScale*5+'</li>'+'<li>'+waterScale*4+'</li>'+'<li>'+waterScale*3+'</li>'+'<li>'+waterScale*2+'</li>'+'<li>'+waterScale+'</li>'+'<li>0</li>');
		$("#step4 h1").text('Economia de água');
			$("#step4 h2").html(Math.round(waterUsedHWE-waterUsedMillicare)+' '+units+' de água<br />(equivalente a '+waterSavings+' banhos de chuveiro)');
		$("p.graph1").text(Math.round(waterUsedMillicare));
		$("p.graph2").text(Math.round(waterUsedHWE));
		$("p.totalsavings").text('ECONOMIA TOTAL: 99,12%');
		$("#chart").addClass('water');
		$("#chart").removeClass('energy');
		$("#chart").removeClass('emissions');
		pageTracker._trackPageview('/resourcecalculator/water');
		move3to4();
		return false;
	});
	$("#viewenergy").click(function() {
		udv_viewed_energy = 1;
		pageTracker._setVar(udv_quantity+':'+udv_state_country+':'+udv_viewed_water+':'+udv_viewed_energy+':'+udv_viewed_emissions+':'+udv_times_viewed_print);
		if(metric) units = 'MJ';
		else units = 'kwh';
		$("#savings_logo").attr('src','images/energy_icon.jpg');
		$("#chart ul").html('<li>'+energyScale*8+'</li>'+'<li>'+energyScale*7+'</li>'+'<li>'+energyScale*6+'</li>'+'<li>'+energyScale*5+'</li>'+'<li>'+energyScale*4+'</li>'+'<li>'+energyScale*3+'</li>'+'<li>'+energyScale*2+'</li>'+'<li>'+energyScale+'</li>'+'<li>0</li>');
		$("#step4 h1").text('Economia de energia');
		$("#step4 h2").html(Math.round(energyUsedHWE-energyUsedMillicare)+' '+units+' de energia<br />(suficiente para abastecer uma casa por '+energySavings+' dias)');
		$("p.graph1").text(Math.round(energyUsedMillicare));
		$("p.graph2").text(Math.round(energyUsedHWE));
		$("p.totalsavings").text('ECONOMIA TOTAL: 75,99%');
		$("#chart").addClass('energy');
		$("#chart").removeClass('water');
		$("#chart").removeClass('emissions');
		pageTracker._trackPageview('/resourcecalculator/energy');
		move3to4();
		return false;
	});
	$("#viewemissions").click(function() {
		udv_viewed_energy = 1;
		pageTracker._setVar(udv_quantity+':'+udv_state_country+':'+udv_viewed_water+':'+udv_viewed_energy+':'+udv_viewed_emissions+':'+udv_times_viewed_print);
		units = 'toneladas';
		if(metric) unitsVolume = 'liters';
		else unitsVolume = 'galões';
		$("#savings_logo").attr('src','images/emissions_icon.jpg');
		$("#chart ul").html('<li>'+(Math.round(100*emissionsScale*8)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>'+(Math.round(100*emissionsScale*7)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>'+(Math.round(100*emissionsScale*6)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>'+(Math.round(100*emissionsScale*5)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>'+(Math.round(100*emissionsScale*4)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>'+(Math.round(100*emissionsScale*3)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>'+(Math.round(100*emissionsScale*2)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>'+(Math.round(100*emissionsScale)/100).toFixed(2).toString().replace('.',',')+'</li>'+'<li>0</li>');
		$("#step4 h1").text('Redução de emissões');
		$("#step4 h2").html(Math.round(100*(emissionsUsedHWE-emissionsUsedMillicare))/100+' '+units+' de carbono geradas por emissões de carbono (equivalente a '+emissionsReduction+' '+unitsVolume+' de gasolina)', true);
		$("p.graph1").text((Math.round(100*emissionsUsedMillicare)/100).toFixed(2).toString().replace('.',','));
		$("p.graph2").text((Math.round(100*emissionsUsedHWE)/100).toFixed(2).toString().replace('.',','));
		$("p.totalsavings").text('ECONOMIA TOTAL: 75,99%');
		$("#chart").addClass('emissions');
		$("#chart").removeClass('water');
		$("#chart").removeClass('energy');
		pageTracker._trackPageview('/resourcecalculator/emissions');
		move3to4();
		return false;
	});


	// STEP 4 FUNCTIONS
	function move4to3() {
		$("#step3").show();
		$("#step4").animate({left: 800, opacity: 0}, 'slow', function() {
			$("#step4").hide();
		});
		$("#step3").animate({left: 0, opacity: 1}, 'slow');
		return false;
	}
	$("#step4 .prev").click(function() {
		move4to3();
		pageTracker._trackPageview('/resourcecalculator/global/back');
	});
	$(".printreport").click(function() {
		$("input.temp").remove();
		udv_times_viewed_print = udv_times_viewed_print + 1;
		pageTracker._setVar(udv_quantity+':'+udv_state_country+':'+udv_viewed_water+':'+udv_viewed_energy+':'+udv_viewed_emissions+':'+udv_times_viewed_print);
		$(this).after('<input class="temp" type="hidden" name="name" value="'+name+'" /><input class="temp" type="hidden" name="state" value="'+state+'" /><input class="temp" type="hidden" name="metric" value="'+metric+'" /><input class="temp" type="hidden" name="sqft" value="'+sqft+'" /><input class="temp" type="hidden" name="waterScale" value="'+waterScale+'" /><input class="temp" type="hidden" name="waterDiffCollo" value="'+waterSavings+'" /><input class="temp" type="hidden" name="waterValueMil" value="'+waterUsedMillicare+'" /><input class="temp" type="hidden" name="waterValueHWE" value="'+waterUsedHWE+'" /><input class="temp" type="hidden" name="energyScale" value="'+energyScale+'" /><input class="temp" type="hidden" name="energyDiffCollo" value="'+energySavings+'" /><input class="temp" type="hidden" name="energyValueMil" value="'+energyUsedMillicare+'" /><input class="temp" type="hidden" name="energyValueHWE" value="'+energyUsedHWE+'" /><input class="temp" type="hidden" name="emissionsScale" value="'+emissionsScale+'" /><input class="temp" type="hidden" name="emissionsDiffCollo" value="'+emissionsReduction+'" /><input class="temp" type="hidden" name="emissionsValueMil" value="'+emissionsUsedMillicare+'" /><input class="temp" type="hidden" name="emissionsValueHWE" value="'+emissionsUsedHWE+'" />');
		pageTracker._trackPageview('/resourcecalculator/print');
		$("form #print").submit();
	});
});
