
var application = {};

application.longDistancePlans = {
		"starter_plan": 0,
		"all_world_plan": 2.00,
		"world_world_plan": 2.00,
		"asia_for_you": 2.00,
		"north_america": 19.95,
		"intl_europe": 24.95,
		"intl_asian": 24.95,
		"intl_plus": 34.95
	}

addLoadEvent(function() {
	detailsOff();
	application.longDistancePrice = 0;
	application.packagePriceRegular = 0;
	
	$("voicemail01").onclick = popupVoicemail;
	
	var features = getElementsByClassName("feature");
	var nf = features.length;

	if (nf > 0) {
		application.features = [];
	
		for (i=0; i < nf; i++) {
			application.features[i] = features[i];
		
			features[i].onchange = calculateNumFeatures;
			features[i].onclick = calculateNumFeatures;
		}
	
		calculateNumFeatures();
	}

	$("radio_LD_NorthAmerica").onchange = calculateNumFeatures;
	$("radio_LD_NorthAmerica").onclick = calculateNumFeatures;

	$("radio_LD_International").onchange = calculateNumFeatures;
	$("radio_LD_International").onclick = calculateNumFeatures;

	$("province").onclick = synchProvinceToggles;
	$("province").onchange = synchProvinceToggles;

	if ($("province_pick_ON")) {
		$("province_pick_ON").onclick = synchProvinceToggles;
		$("province_pick_ON").onchange = synchProvinceToggles;
		$("province_pick_NB").onclick = synchProvinceToggles;
		$("province_pick_NB").onchange = synchProvinceToggles;
		$("province_pick_NF").onclick = synchProvinceToggles;
		$("province_pick_NF").onchange = synchProvinceToggles;

		setProvinceRadios($("province").value);
	}

	application.longDistanceRadios = getElementsByClassName("long_distance_radio");
	var nc = application.longDistanceRadios.length;

	if (nc > 0) {
		updateLongDistanceTip();
	
		for (i=0; i < nc; i++) {
			application.longDistanceRadios[i].onchange = updateLongDistanceTip;
			application.longDistanceRadios[i].onclick = updateLongDistanceTip;
		}
	}

	if ($("yes_keep")) {
		$("yes_keep").onchange = togglePortInfo;
		$("yes_keep").onclick = togglePortInfo;
		$("get_new").onchange = togglePortInfo;
		$("get_new").onclick = togglePortInfo;
		togglePortInfo()
	}

	if ($("yes_ex_int")) {
		$("yes_ex_int").onchange = setHighSpeedDisplay;
		$("yes_ex_int").onclick = setHighSpeedDisplay;
		$("no_ex_int").onchange = setHighSpeedDisplay;
		$("no_ex_int").onclick = setHighSpeedDisplay;
		setHighSpeedDisplay();
	}
	
	$("details_rogers").onclick = detailsOn;

	var detailsClose = getElementsByClassName("details_close");
	var nd = detailsClose.length;
	for (i=0; i < nd; i++) {
		detailsClose[i].onclick = detailsOff;
	}	

	
	$("unlisted_number").onclick = updatePriceCalculator;
	$("unlisted_number").onchange = updatePriceCalculator;

	$("distinctive_ring").onclick = updatePriceCalculator;
	$("distinctive_ring").onchange = updatePriceCalculator;

	//$("pc").onchange = checkServiceability;
	//$("sc_check").onclick = checkServiceability;
});

function populateServiceabilityData(response) {
	if (response["CITY"]) {
		$("city").value = response["CITY"];
		$("postal_code").value = response["POSTAL_CODE"];
		$("address").value = response["STREET_NAME"] + " " + response["STREET_TYPE"] + " " + response["COMPASS_DIRECTION_CODE"];
		$("prov_" + response["PROV_CODE"]).selected = true;
	
		calculateNumFeatures();
	}
}

function synchProvinceToggles() {
	if ($("province_pick_ON")) {
		// Two province selectors exist, we need to synch.
		if (this.id == "province") {
			// The change was made with the drop-down, so we change the radios to match.
			setProvinceRadios(this.value);
		} else {
			// The change was made with the top radio buttons, so we change the drop-down to match.
			var prov = ["ON", "NB", "NF"];
			for (i = 0; i < 3; i++) {
				if ($("province_pick_" + prov[i]).checked) {
					$("province").value = prov[i];
					break;
				}
			} 
		}
	}

	calculateNumFeatures();
	return true;
}

function setProvinceRadios(prv) {
	$("province_pick_ON").checked = false;
	$("province_pick_NB").checked = false;
	$("province_pick_NF").checked = false;
	
	$("province_pick_" + prv).checked = true;
}


function togglePortInfo() {
	if ($("yes_keep").checked) {
		$("number_port_wrap").style.display = "block";
		
		$("tips_get_new_number").style.display = "none";
		$("tips_keep_existing").style.display = "block";
		
		$("install_wait_time").innerHTML = "6";
	} else {
		$("number_port_wrap").style.display = "none";

		$("tips_get_new_number").style.display = "block";
		$("tips_keep_existing").style.display = "none";

		$("install_wait_time").innerHTML = "4";
	}
}

function updateLongDistanceTip() {
	var nc = application.longDistanceRadios.length;

	var selectedId = false;

	for (i=0; i < nc; i++) {
		if (application.longDistanceRadios[i].checked) {
			$("tips_" + application.longDistanceRadios[i].id).style.display = "block";
			selectedId = application.longDistanceRadios[i].id;
		} else {
			$("tips_" + application.longDistanceRadios[i].id).style.display = "none";
		}
	}	
	
	if (!selectedId) {
		$("tips_starter_plan").style.display = "block";
		$("starter_plan").checked = "true";
		application.longDistancePrice = 0;
	} else {
		application.longDistancePrice = application.longDistancePlans[selectedId];
	}
	updatePriceCalculator();
}

function updateFees(province) {
	var feeWraps = getElementsByClassName("fees");
	var nfw = feeWraps.length;
	
	for (i=0; i < nfw; i++) {
		feeWraps[i].style.display = "none";
	}
	
	feeWraps = getElementsByClassName("fees_" + province);
	nfw = feeWraps.length;
	
	for (i=0; i < nfw; i++) {
		feeWraps[i].style.display = "inline";
	}
}

function calculateNumFeatures() {
	var nf = application.features.length;
	
	var numChecked = 0;
	
	for (i=0; i < nf; i++)
		if (application.features[i].checked)
			numChecked++;

	var plan = "";
	
	if ($("radio_LD_International").checked) {
		plan = {
			"name": config.rogers.intl.name,
			"price": roundNumber(calculateRogersPlanPrice(config.rogers.intl, numChecked), 2, true),
			"keyword": config.rogers.intl.keyword
		};
	} else {
	 	plan = calculateRogersPlans(numChecked);
	}
	
	var region = $("province").value.toLowerCase();
	updateFees(region);
	
	if (region != "on") {
		plan.price = roundNumber(plan.price * 1 + config.rogers.differentials[region], 2, true);
	}
	
	setCost("rogers", plan.price);
	$("plan_name").innerHTML = plan.name;

	$("basic_ld_minutes").style.display = "none";
	$("classic_ld_minutes").style.display = "none";
	$("extras_ld_minutes").style.display = "none";
	$("intl_ld_minutes").style.display = "none";
	$(plan.keyword + "_ld_minutes").style.display = "inline";

	if (plan.keyword != "intl") {
		$("basic_incl_minutes").style.display = "none";
		$("classic_incl_minutes").style.display = "none";
		$("extras_incl_minutes").style.display = "none";
		$(plan.keyword + "_incl_minutes").style.display = "inline";
	}
	
	application.packagePriceRegular = plan.price - 1 + 1;
	application.currentPlan = plan;

	updateDetails();
	
	if (!$("radio_LD_International").checked) {
	
		$('LD_caveat').style.display = "none";
	
		if (numChecked == 0)
			showUpgradeCallout("upgrade_classic");
		else if (numChecked == 1)
			showUpgradeCallout("add_feature_classic");
		else if (numChecked == 3)
			showUpgradeCallout("upgrade_extras");
		else if (numChecked == 4)
			showUpgradeCallout("add_feature_extras");
		else
			hideUpgradeCallout();
	} else {
		hideUpgradeCallout();	
		if (numChecked < 2)
			$('LD_caveat').style.display = "block";
		else
			$('LD_caveat').style.display = "none";
			
	}

	updatePriceCalculator();
}

function showUpgradeCallout(box) {
	$("callout_upgrade_extras").style.display = "none";
	$("callout_upgrade_classic").style.display = "none";
	$("callout_add_feature_classic").style.display = "none";
	$("callout_add_feature_extras").style.display = "none";
	
	$("callout_" + box).style.display = "block";
	
	$("upgrade_callout").style.display = "block";
}

function hideUpgradeCallout() {
	$("upgrade_callout").style.display = "none";
}


function detailsOn() {
	detailsOff();
	$("details_rogers_" + application.currentPlan.keyword).style.display = "block";
	return false;
}

function detailsOff() {
	$("details_rogers_basic").style.display = "none";
	$("details_rogers_classic").style.display = "none";
	$("details_rogers_extras").style.display = "none";
	$("details_rogers_intl").style.display = "none";
	return false;
}

/** If the details pane is open, make sure it's the right one.
 */
function updateDetails() {
	if ($("details_rogers_basic").style.display == "block" || 
		$("details_rogers_classic").style.display == "block" ||
		$("details_rogers_extras").style.display == "block" ||
		$("details_rogers_intl").style.display == "block")
	{
		detailsOff();
		$("details_rogers_" + application.currentPlan.keyword).style.display = "block";
	}
}

/** To be used if the user changes feature or location options when the details pane is open
 */
function updateDetailsPaneIfNecessary() {
	
}


function updatePriceCalculator() {
	extras = 0;
	
	if ($("unlisted_number").checked)
		extras += 2.00;

	if ($("distinctive_ring").checked)
		extras += 4.00;
	
	$("fee_regular").innerHTML = roundNumber(application.packagePriceRegular + application.longDistancePrice + extras, 2, true)
}

function setHighSpeedDisplay() {
	if ($("yes_ex_int").checked) {
		$("high_speed_details").style.display = "inline";
	} else {
		$("high_speed_details").style.display = "none";
	}
}

function popupVoicemail() {
	var voicemail = window.open(this.href, 'comparison', 'height=350,width=990,location=no');
	return false;
}
