$(document).ready( function() {
	// Postpaid Plan builder
	if (ie6) {
		$("#select-a-plan .item:eq(0) .replaced").addClass("first");
	}
	else {
		$("#select-a-plan .item:eq(0)").addClass("first"); // mark first plan in list
	}
	$(".pay-monthly .plans-page form, .pay-monthly .details-page form").resetForm(); // clear the form on reload or first visit. 
	$("#review-your-plan .link").hide();
	$("#minicart-button .edit-your-cart").hide();
	$("#minicart-button .checkout").hide();
	$("#review-your-plan .phone .subsidy").hide();
	$("#select-a-plan .item .replaced :radio") // radio button replacement
		.addClass("ui-helper-hidden-accessible")
		.after("<span class=\"ui-radio\"></span>");
	$("#select-a-plan .item > .check-controls").hover(
		function(){
			$(this).addClass("hover");
			$(this).find(".ui-radio").addClass("ui-radio-state-hover");
		},
		function(){
			$(this).removeClass("hover");
			$(this).find(".ui-radio").removeClass("ui-radio-state-hover");
		}
	);

	$("#review-your-plan #form-action :image").attr("disabled","disabled").css("opacity","0.15"); //disable action button. 
	$("#logo-box #form-action-logo :image").attr("disabled","disabled").css("opacity","0.15"); //disable action button. 
	
	$("#plans-pricing.has-voucher #select-a-plan .item .terms label").addClass("disabled"); // if eligible for a voucher, add the class to #plans-pricing
	$("#select-a-plan .item.unselected > .check-controls").livequery("click", function() {
		displayPlan($(this));
	});
	$("#select-a-plan .item.selected > .terms .check-controls").livequery("click", 
		function(){
			var term=$(this).find("label").html().split("<")[0].toLowerCase();
			$("#review-your-plan #r1").text($(this).parent().parent().parent().find("#plan-name").text()+", "+term+" term");
			$("#review-your-plan-logo #r1-logo").text($(this).parent().parent().parent().find("#plan-name").text()+", "+term+" term");
			$(".plan-summary-term").text(term);
			updateOneOffPrice();
		}
	);

	$("#select-a-plan .item.selected > .check-controls").livequery("click", 
		function(){
			var item = $(this).parents(".item"); // the plan selected
			var terms = $(this).siblings(".terms"); // the terms associated with the plan		
			var radio = $(this).find(":radio"); //the associated radio button
			$("#plan-00 :radio").attr("checked",true); // select the hidden "none" radio button
			radio.siblings("span").removeClass("ui-radio-state-checked");
			item.addClass("unselected").removeClass("selected"); //close the box
			terms.clearForm().find(":radio").attr("disabled","disabled"); // disable the terms radio buttons
			$("#select-a-plan .item").removeClass("previous"); // add the above border back in
			$("#review-your-plan #form-action :image").attr("disabled","disabled").css("opacity","0.15");
			$("#logo-box #form-action-logo :image").attr("disabled","disabled").css("opacity","0.15");
			$("#plan-summary .content-inner").children("h3, ul").addClass("hide");
			$("#review-your-plan .link").hide();
			$("#minicart-button .edit-your-cart").hide();
			$("#minicart-button .checkout").hide();
			$("#review-your-plan .phone .subsidy").hide();
			$("#plan-price").text("$0.00");
			$("#review-your-plan td[headers=r0 r1]").text("");
			$("#review-your-plan #r1").text("None selected");
			$("#review-your-plan-logo #r1-logo").text("None selected");
			updateMonthlyPrice();
		}
	);
	
	// Add bolt-ons
	$("#add-bolt-ons .item > .check-controls").hover(
		function(){
			if (!($(this).parent().hasClass("null"))) {
				$(this).addClass("hover");
			}
		},
		function(){
			$(this).removeClass("hover");
		}
	);
	$("#add-bolt-ons .item").livequery("click", 
		function(){
			var item = $(this); // the bolt-on selected
			var group = $(this).parents("fieldset"); // the selected bolt-on's group
			item.find(":radio").attr("checked",true);
			item.siblings().removeClass("selected"); // unselect any selected bolt-ons
			if (!(item.prev().hasClass("help"))) {
				item.addClass("selected"); // highlight the selected bolt-on as long it is not "none"
			}
			// mark item above with class to remove border
			group.find(".item").removeClass("previous");
			item.prev(".item").addClass("previous");
			$("#bolt-on-price").text(calculateBoltOnPrice());
			updateMonthlyPrice();
			setBoltOnSelectedLabel();
		}
	);
	// hide/show Bolt-ons and Plans details
	$("#bolt-ons, #plans").addClass("hide");
	$("#menu-bar").addClass("build-your-plan-active");
	var bypLink = $("#menu-bar #build-your-plan-link a").html();
	var pLink = $("#menu-bar #plans-link a").html();
	var boLink = $("#menu-bar #bolt-ons-link a").html();
	$("#menu-bar #build-your-plan-link a").remove();
	$("#menu-bar #build-your-plan-link").html("<span>" + bypLink + "</span>");
	$("#menu-bar #plans-link a, #compare-plans-link a, #select-a-plan .link a").livequery("click",
		function(){
			$("#plans").removeClass("hide");
			$("#bolt-ons").addClass("hide");
			$(".details-page #build-your-plan h4").addClass("hide");
			$(".plans-page #build-your-plan h2").addClass("hide");
			$("#menu-bar").removeClass("build-your-plan-active");
			$("#menu-bar").removeClass("bolt-ons-active");
			$("#menu-bar").addClass("plans-active");
			$("#menu-bar #plans-link").html("<span>" + pLink + "</span>");
			if ($("#menu-bar #build-your-plan-link").children().is("span")) {
				$("#menu-bar #build-your-plan-link").html("<a href=\"#build-your-plan\">" + bypLink + "</a>");
			}
			if ($("#menu-bar #bolt-ons-link").children().is("span")) {
				$("#menu-bar #bolt-ons-link").html("<a href=\"#bolt-ons\">" + boLink + "</a>");
			}
			if ($("#page").hasClass("plans-page")) {
				scrollToContentInner();
			}
			else {
				scrollToDetails();
			}
			return false;
		}
	);
	$("#menu-bar #bolt-ons-link a, #about-bolt-ons-link a, #add-bolt-ons .help a").livequery("click",
		function(){
			$("#bolt-ons").removeClass("hide");
			$("#plans").addClass("hide");
			$(".details-page #build-your-plan h4").addClass("hide");
			$(".plans-page #build-your-plan h2").addClass("hide");
			$("#menu-bar").removeClass("build-your-plan-active");
			$("#menu-bar").removeClass("plans-active");
			$("#menu-bar").addClass("bolt-ons-active");
			$("#menu-bar #bolt-ons-link").html("<span>" + boLink + "</span>");
			if ($("#menu-bar #build-your-plan-link").children().is("span")) {
				$("#menu-bar #build-your-plan-link").html("<a href=\"#build-your-plan\">" + bypLink + "</a>");
			}
			if ($("#menu-bar #plans-link").children().is("span")) {
				$("#menu-bar #plans-link").html("<a href=\"#plans\">" + pLink + "</a>");
			}
			if ($("#page").hasClass("plans-page")) {
				scrollToContentInner();
			}
			else {
				scrollToDetails();
			}
			return false;
		}
	);
	$("#menu-bar #build-your-plan-link a").livequery("click",
		function(){
			$("#plans").addClass("hide");
			$("#bolt-ons").addClass("hide");
			$(".details-page #build-your-plan h4").removeClass("hide");
			$(".plans-page #build-your-plan h2").removeClass("hide");
			$("#menu-bar").removeClass("bolt-ons-active");
			$("#menu-bar").removeClass("plans-active");
			$("#menu-bar").addClass("build-your-plan-active");
			$("#menu-bar #build-your-plan-link").html("<span>" + bypLink + "</span>");
			if ($("#menu-bar #bolt-ons-link").children().is("span")) {
				$("#menu-bar #bolt-ons-link").html("<a href=\"#bolt-ons\">" + boLink + "</a>");
			}
			if ($("#menu-bar #plans-link").children().is("span")) {
				$("#menu-bar #plans-link").html("<a href=\"#plans\">" + pLink + "</a>");
			}
			if ($("#page").hasClass("plans-page")) {
				scrollToContentInner();
			} else {
				scrollToDetails();
			}
			return false;
		}
	);
	
	// popups - terms & conditions and plan summary
	// adding javascript-only components to box
	$("#plan-summary .content-inner").after("<div class=\"close\"><a href=\"#\">Close</a></div>");
	$("#plan-summary-wrapper .close").after("<div class=\"print\"><a href=\"#\">Print page</a></div>");
	$(".print a").click(function(){
		window.print();
		return false;
	});

	// opening and closing the popup box
	if (ie6) {
		$("#plan-summary-wrapper-ie6").addClass("hide");
		$("#plans a.terms-conditions-link").click(
			function(){
				$("#plan-summary .columns, #plan-summary h3:first, #plan-summary ul:first").addClass("hide");
				$("#plan-summary-terms-and-conditions").removeClass("hide");
				$("#plan-summary-wrapper-ie6").bgiframe().addClass("show").removeClass("hide");
				$("#plan-summary").addClass("show").removeClass("hide").vCenter();
				$("body").addClass("plan-summary-print");
				return false;
			}
		);
		$("#review-your-plan .link a").click(
			function(){
				$("#plan-summary .columns, #plan-summary-terms-and-conditions, #plan-summary h3:first, #plan-summary ul:first").removeClass("hide");
				$("#plan-summary .column").removeClass("hide");
				$("#plan-summary-wrapper-ie6").bgiframe().addClass("show").removeClass("hide");
				$("#plan-summary").addClass("show").removeClass("hide").vCenter();
				$("body").addClass("plan-summary-print");
				return false;
			}
		);
		$("#plans a.additional-costs-link").click(
			function(){
				$("#plan-summary .column-02, #plan-summary-terms-and-conditions, #plan-summary h3:first, #plan-summary ul:first").addClass("hide");
				$("#plan-summary .column-01, #plan-summary .columns").removeClass("hide");
				$("#plan-summary-wrapper-ie6").bgiframe().addClass("show").removeClass("hide");
				$("#plan-summary").addClass("show").removeClass("hide").vCenter();
				$("body").addClass("plan-summary-print");
				return false;
			}
		);

		$("#plan-summary .close a").click(
			function(){
				$("#plan-summary-wrapper-ie6").addClass("hide").removeClass("show");
				$("body").removeClass("plan-summary-print");
				return false;
			}
		);
	} else {
		$("#plan-summary-wrapper, #plan-summary").addClass("hide");
		$("#plans a.terms-conditions-link").click(
			function(){
				$("#plan-summary .columns, #plan-summary h3:first, #plan-summary ul:first").addClass("hide");
				$("#plan-summary-terms-and-conditions").removeClass("hide");
				$("#plan-summary-wrapper").addClass("show").removeClass("hide");
				$("#plan-summary").addClass("show").removeClass("hide").vCenter();
				$("body").addClass("plan-summary-print");
				return false;
			}
		);
		$("#review-your-plan .link a").click(
			function(){
				$("#plan-summary .columns, #plan-summary-terms-and-conditions, #plan-summary h3:first, #plan-summary ul:first").removeClass("hide");
				$("#plan-summary .column").removeClass("hide");
				$("#plan-summary-wrapper").addClass("show").removeClass("hide");
				$("#plan-summary").addClass("show").removeClass("hide").vCenter();
				$("body").addClass("plan-summary-print");
				return false;
			}
		);
		$("#plans a.additional-costs-link").click(
			function(){
				$("#plan-summary .column-02, #plan-summary-terms-and-conditions, #plan-summary h3:first, #plan-summary ul:first").addClass("hide");
				$("#plan-summary .column-01, #plan-summary .columns").removeClass("hide");
				$("#plan-summary-wrapper").addClass("show").removeClass("hide");
				$("#plan-summary").addClass("show").removeClass("hide").vCenter();
				$("body").addClass("plan-summary-print");
				return false;
			}
		);
		$("#plan-summary .close a").click(
			function(){
				$("#plan-summary-wrapper").addClass("hide").removeClass("show");
				$("body").removeClass("plan-summary-print");
				return false;
			}
		);
	}

	// add extra markup for IE6 display issues
	if (ie6) {
		$(".pay-monthly #add-bolt-ons fieldset").wrap("<div></div>");
	}

	$("#select-a-plan .item .terms :radio").attr("disabled","disabled"); //disable all form controls on reload or first visit. 
	$("#bolt-on-price").text(calculateBoltOnPrice());
	if ($("#select-a-plan .item .terms :radio:checked").length > 0) {
		displayPlan($("#select-a-plan .item .terms :radio:checked").parents(".terms").siblings(".check-controls"));
	} else {
		$("#select-a-plan .item").addClass("unselected"); // unselect and close all 
		updateMonthlyPrice();
		updateOneOffPrice();
	}
	setBoltOnSelectedLabel();

	// Add class to the bolt-on line item before one that is a special offer (to fix styling)
	$("#bolt-ons .item.special").prevAll(":first").addClass("before-special");

	//*** Fix validation for mandatory bolt-ons
	$("#review-your-plan #form-action :image").click(function(){ //*** use livequery instead of click?
		return autoRedUnselectedMandatoryBoltOns();
	    });

	// on-load, if the button is already enabled (plan selected), the
	// click method will set the style of the warning so it's red.
	if(	!$("#review-your-plan #form-action :image").attr("disabled") ) {
		autoRedUnselectedMandatoryBoltOns();
	}
});

function autoRedUnselectedMandatoryBoltOns() {
	var returnVal = true;
	$("#selectable-bolt-ons fieldset.mandatory").each(function() {
		var boltOn = this;
		if ($(boltOn).find(".item :radio:checked").length == 0) {
			$(boltOn).children(".error-message").wrap("<div class=\"error\">");
		    returnVal = false;
			scrollToDetails();
		}
	    });
	return returnVal;
}

// Calculate the total monthly price (plan + bolt-ons).
function calculateTotalPrice() {
	var planPrice = parseFloat($("#plan-price").text().split("$")[1]);
	var boltOnPrice = parseFloat($("#bolt-on-price").text().split("$")[1]);
	var totalPrice = addFloats(planPrice, boltOnPrice);
	totalPrice = totalPrice.toFixed(2);
	
	var ret = "$" + totalPrice;
	return ret; 
}

// Turn the bolt-on price value into a dollar amount for display.
function calculateBoltOnPrice() {
	var ret = "$" + calculateBoltOnPriceDouble().toFixed(2);
	return ret;
}

// Calculate the total bolt-on price.
function calculateBoltOnPriceDouble() {
	var boltOnText = $("#add-bolt-ons .item :radio[checked]").siblings("label").find(".price").text().split("$");
	var boltOnCost = 0.0;
	for (i=0;i<boltOnText.length;i++) if (parseFloat(boltOnText[i])>0)
		boltOnCost = addFloats(boltOnCost, parseFloat(boltOnText[i]));
	return boltOnCost;
}

// Set the label for the list of bolt-on selections
function setBoltOnSelectedLabel() {
	$("#review-your-plan [headers=r3]").parent().remove();
	$("#plan-summary .content-inner .columns .column-02 > .item").remove();
	var i=4;
	$("#add-bolt-ons .item :radio[checked][value!='']").each(function() {
		if ($(this).siblings("label").find(".price").text() != '$0') {
			var boltOnId = "bolt-on-"+$(this).parent().parent().parent().attr("id");
			if (boltOnId != '' && boltOnValues[boltOnId] != null) {
				var record = "<tr>\n<th scope='row' id='r"+i+"' headers='r3'>"+
					$(this).parent().parent().siblings("legend").text()+" "+
					$(this).siblings("label").html().split("<")[0]+"</th>\n"+
					"<td headers='r3 r"+i+"'>"+$(this).siblings("label").find(".price").text()+"</td>\n</tr>\n";
				$("#review-your-plan .bolt-ons").append(record);
				record = "<div class='item'>\n"+
					"<h5>"+$(this).parent().parent().siblings("legend").text()+" "+
					$(this).siblings("label").html().split("<")[0]+"</h5>\n"+
					"<p class='price'>"+$(this).siblings("label").find(".price").text()+"</p>\n";
				if (boltOnValues[boltOnId]["description"] != '') 
					record = record + "<p class='text'>"+boltOnValues[boltOnId]["description"]+"</p>\n";
				record = record + boltOnValues[boltOnId]["notes"]+"\n</div>\n";
				$("#plan-summary .content-inner .columns > .column-02").append(record);
				i++;
			}
		}
	});
	$("#plan-summary .content-inner .columns > .column-02").removeClass("hide");
	if ($("#review-your-plan [headers=r3]").length==0) {
		$("#review-your-plan .bolt-ons").append("        <tr>\n"+
			"          <th scope=\"row\" id=\"r4\" headers=\"r3\">None selected</th>\n"+
			"          <td headers=\"r3 r4\"></td>\n"+
			"        </tr>\n");
		$("#plan-summary .content-inner .columns > .column-02").addClass("hide");
	}
}

function displayPlan(planControl) {
	var item = $(planControl).parents(".item"); // the plan selected
	var id = $(item).attr("id");
	var terms = $(planControl).siblings(".terms"); // the terms associated with the plan
	var radio = $(planControl).find(":radio"); //the associated radio button
	item.removeClass("unselected").addClass("selected"); // open the selected box
	item.siblings(".item").addClass("unselected").removeClass("selected"); // close any opened boxes
	radio.attr("checked",true);
	radio.siblings("span").addClass("ui-radio-state-checked");
	item.siblings(".item").find("span.ui-radio").removeClass("ui-radio-state-checked");
	terms.find(":disabled").removeAttr("disabled"); // enable the terms controls for the selected box
	if (terms.find(":radio:checked").length==0) {
		terms.find(":radio:first").attr("checked","checked"); // default check the first control
	}
	item.siblings().find(".terms :input").attr("disabled","disabled"); // disable any enabled terms controls in closed boxes
	item.siblings().clearForm(); //clears any choices in closed boxes
	// mark item above with class to remove border
	$("#select-a-plan .item").removeClass("previous");
	item.prev(".item").addClass("previous");
	$("#review-your-plan #form-action :image").removeAttr("disabled").css("opacity","1");
	$("#logo-box #form-action-logo :image").removeAttr("disabled").css("opacity","1");
	$("#review-your-plan .link").show();
	$("#minicart-button .edit-your-cart").show();
	$("#minicart-button .checkout").show();
	$("#review-your-plan .phone .subsidy").show();

	$("#plan-price, .plan-summary-price, td[headers=r0 r1]").text(planValues[id]["price"]);
	var term=terms.find(":radio:checked").siblings("label").html().split("<")[0];
	$("#review-your-plan #r1").text($(planControl).find("#plan-name").text()+", "+term+" term");
	//$("#review-your-plan-logo #r1-logo").text("on " + $(planControl).find("#plan-name").text()+", "+term+" term");
	$("#plan-summary .content-inner").children("h3, ul").removeClass("hide");
	$(".plan-summary-term").text(term);
	$(".plan-summary-name").text(planValues[id]["name"]);
	$(".plan-summary-notes").text(planValues[id]["notes"]);
	updateMonthlyPrice();
	updateOneOffPrice();
}

function updateMonthlyPrice() {
	$("#total-price").text(calculateTotalPrice());			
	$("#review-your-plan .total td[headers=r7]").text(calculateTotalPrice());
}

// Updates the one-off phone price section if on the plans & pricing tab.
function updateOneOffPrice() {
	if ($("[headers*=r8]").length>0) {
		var html=$("#select-a-plan .item.selected > .terms .check-controls :radio:checked").siblings("label").html();
		var term=html!=null?html.split("<")[0]:'';
		var subsidyLineTokens=$("#select-a-plan .item.selected > .terms .check-controls :radio:checked").siblings("label").find("span").text().split(" ");
		var subsidy = subsidyLineTokens[0];
		var origHandsetPrice = $("td[headers=r8 r9] .price").text();
	    var origHandsetPriceValue = parseFloat(origHandsetPrice);
		if (subsidy == "Up") subsidy = subsidyLineTokens[2];
		var specialPrice=$("#select-a-plan .item.selected > .terms .check-controls :radio:checked").siblings("label").find("span").text().split("Special");
		if (specialPrice.length > 1) {
			$("th#r10[headers=r8]").text("Special offer discount");
			$("td[headers=r8 r10]").text("-$"+(origHandsetPrice-specialPrice[1].split("$")[1]).toFixed(2));
			$("td[headers=r11]").text("$"+specialPrice[1].split("$")[1]);
		} else {   
			var subsidyValue = parseFloat(subsidy.split("$")[1]);
			var handsetPriceValue = origHandsetPriceValue;
			if (subsidyValue > 0)
				 handsetPriceValue = handsetPriceValue - subsidyValue;
			var handsetFormatted = handsetPriceValue > 0 ? "$" + handsetPriceValue : "FREE";
			if (handsetFormatted.split(".").length==1 && handsetFormatted != "FREE") handsetFormatted += ".00";

			if (subsidy == '') {
			    subsidy="$0.00";
			} else if (subsidyValue >= origHandsetPriceValue) {
			    subsidy = "$" + origHandsetPrice;
			}

			if (term == '' || term == 'Open') {
			    $("th#r10[headers=r8]").text('');
			    $("td[headers=r8 r10]").text('');
			} else {
			    $("th#r10[headers=r8]").text(term+" term discount");
			    $("td[headers=r8 r10]").text("-"+subsidy);
			}

			$("td[headers=r11]").text(handsetFormatted);
		}
	}
}

