//*** load xml ***//
function packageSelectorXML()
{
	var bbPlan = document.getElementById('packageSelector');
	//LBI.Data.dsoXML = "../" + LBI.Data.dsoXML; /* FOR LOCAL TESTING */
	
	if( bbPlan == null){
		return;
	}
	var oOptions = {
		url : LBI.Data.dsoXML + "package_pricing.xml",
		timer : 60000,
		dataType : "xml",
		coreObj : this,
		errorLog : function() {
			//alert("not working");
		},
		successLog : function(data) {
			xmlDoc = data;
			packageSelector();
		}
	};
	/* This is a method set in main.js */	
	LBI.Common.ajaxLoader(oOptions);
}

// Package selector for vision
function packageSelector(){	
	$("#packageSelector").removeClass("hidden");
	$(".tv .option").attr({"id":"tvOption1"});
	
	var packages = $("input.packageSelect");
	var packageName = $(".packagename");
	var autoPacks = $(".ppvConditionalPacks").html();	
	for (k=0; k<packages.length ; k++){
		packages[k].checked = false;
	}	
	//triggering hover styles
	$(packageName).hover(
		function(){
			if($(this).hasClass("selectedPackage") == false){
				$(this).addClass("hovering")
			}
		},
		function(){
				$(this).removeClass("hovering");
		}
	)	
	costCalculator();
	calculatePrice();
	//triggering click event	
	$(packageName).click(function(){
		var packageSelected = $(this).attr("id");
		var packageNameEl = LBI.Common.getPEClassInfo(this, "N_");
		var classInfo = LBI.Common.getPEClassInfo(this, "F_");
		var planInfo = LBI.Common.getPEClassInfo(this, "P_");
		
		var currentState = $(this).hasClass("selectedPackage");
		if(currentState == false){
			$(this).addClass("selectedPackage");
			$(this).removeClass("hovering");
		}
		else{
			$(this).removeClass("selectedPackage");
			$(this).addClass("hovering");
		}		
		var inclPackage = "#incl_" + packageSelected;
		var ppvPackage = "#ppv_" + packageSelected;		
		var inclContainer = $("ul#incl");
		var ppvContainer = $("ul#ppv");
		var channelContainer = $("ul#channel");	
		if($(inclPackage).length !== 0 && classInfo == "ppv" ){
			var ppvElement = document.createElement("li");			
			$(ppvElement).attr({id: "ppv_" + packageSelected});
			$(ppvElement).text(packageSelected);
			ppvContainer[0].appendChild(ppvElement);			
			$(inclPackage).replaceWith("");			
			conditionalPack(autoPacks);
		}else if($(ppvPackage).length !== 0){		
			var includeElement = document.createElement("li");		
			$(includeElement).attr({id: "incl_" + packageSelected});
			$(includeElement).addClass("packs");
			$(includeElement).text(packageNameEl);
			inclContainer[0].appendChild(includeElement);			
			$(ppvPackage).replaceWith("");			
			conditionalPack(autoPacks);
		}else if(classInfo == "incl"){
			if($(inclPackage).length == 0){
				var includeElement = document.createElement("li");		
				$(includeElement).attr({id: "incl_" + packageSelected});
				$(includeElement).addClass("packs");
				$(includeElement).text(packageNameEl);
				inclContainer[0].appendChild(includeElement);				
				conditionalPack(autoPacks);
			}else{
				$(inclPackage).replaceWith("");	
				conditionalPack(autoPacks);
			}
		}else if(classInfo == "channel"){
			if($(inclPackage).length == 0){
				var channels = $(xmlDoc).find(packageSelected);
				var selectedPack = $(channels[0]).find("channelName").text();
				var selectedPackPrice = $(channels[0]).find("channelPrice").text();				
				var includeElement = document.createElement("li");		
					$(includeElement).attr({id: "incl_" + packageSelected});				
				var channelName = document.createElement("span");
					$(channelName).addClass("itemName");					
					$(channelName).text(selectedPack);
					includeElement.appendChild(channelName);				
				var channelPrice = document.createElement("span");
					if(planInfo == "once"){
						$(channelPrice).addClass("C_once");
						$(channelPrice).addClass("oncePrice");
					}
					else if(planInfo == "monthly"){
						$(channelPrice).addClass("C_monthly");
						$(channelPrice).addClass("monthPrice");
					}
					$(channelPrice).addClass("itemPrice");
					$(channelPrice).text(selectedPackPrice);
					includeElement.appendChild(channelPrice);				
				channelContainer[0].appendChild(includeElement);				
				$(".channels h4").removeClass("hidden");
				$(".channels").css({"margin-top": "15px"});
				$("#packageBasket .channels").css({"margin-top": "0", "padding-top": "3px"});
				
				$(includeElement).effect('highlight', {color:"#faadd5"}, 1000);
				
				//specialSettings();
				conditionalPack();
				costCalculator();
				queryGenerator();
				calculatePrice();
				validPack();
				
			}else{
				$(inclPackage).replaceWith("");
				if($("#channel li").length == 0){
					$(".channels h4").addClass("hidden");
					$(".channels").css({"margin-top": 0})
				}
				//specialSettings();
				conditionalPack();
				costCalculator();
				queryGenerator();
				calculatePrice();
			}
		}
	})
}

function conditionalPack(autoIncl){	
	var relevantPacks = $("ul#incl .packs").length;
	var autoSelectPacks = $(".autoSelect");	
	var addBasket = $(".tv .option");

	if(relevantPacks ==0){
		$("#addInfo").text("You need to add at least 2 viewing packs for your Value Pack...");		
		if($("#channel li").length !== 0){
			$(".getItNow").addClass("hidden");
		}
		else{
			$(".getItNow").removeClass("hidden");
		}
		
		$(addBasket[0]).attr({"id":"tvOption1"});
		
		validPack();
		
		costCalculator();
		queryGenerator();
		calculatePrice();
		
	}
	
	else if(relevantPacks ==1){
		var packageSelect = "invalid";
		$(autoSelectPacks).removeClass("selectedAuto");
		$(".packagePrice").addClass("hidden");
		$(".getItNow").addClass("hidden");
		$(".includedPack").addClass("orderInfo");

		//these are in package chooser only
		$(".packSmall").removeClass("hidden");
		$(".packFreeItems").addClass("hidden");
		$(".incentive").addClass("hidden");
		
		$(addBasket[0]).attr({"id":""})
		
		//specialSettings();
		getPackageData(packageSelect, relevantPacks);

		$("li a#basketTab").addClass("hidden");
		$("#getPackage").addClass("hidden");
		$("#getPackSmall").addClass("hidden");
	}
	
	else if(relevantPacks ==2){
		var packageSelect = "bronze";
		$(autoSelectPacks).addClass("selectedAuto");
		$(".getItNow").removeClass("hidden");
		$(".packagePrice").removeClass("hidden");
		$(".includedPack").removeClass("orderInfo");
		
		//these are in package chooser only
		$(".packSmall").addClass("hidden");
		$(".packFreeItems").removeClass("hidden");
		$(".incentive").removeClass("hidden");
		
		$(addBasket[0]).attr({"id":"tvOption2"});		
		//specialSettings();
		getPackageData(packageSelect, relevantPacks);
		
		
	}
	
	else if(relevantPacks ==3){
		var packageSelect = "silver";
		$(".includedPack").removeClass("orderInfo");
		$(addBasket[0]).attr({"id":"tvOption3"})
		//specialSettings()
		getPackageData(packageSelect, relevantPacks);
		
		//these are in package chooser only
		$(".incentive").removeClass("hidden");
		
	}
	
	else{
		var packageSelect = "gold";
		$(".includedPack").removeClass("orderInfo");
		$(addBasket[0]).attr({"id":"tvOption4"});
		
		//these are in package chooser only
		$(".incentive").addClass("hidden");
		//specialSettings()
		getPackageData(packageSelect, relevantPacks);
	}
}

function getPackageData(packageName, numberOfPacks){
	var packages = $(xmlDoc).find(packageName);	
	var imageSource = $(packages[0]).find("imageSource").text();
	var selectedPack = $(packages[0]).find("packageName").text();
	var numberPacks = $(packages[0]).find("packNumbers").text();
	var packsIncluded = $(packages[0]).find("includedPacks").text();
	var packagePrice = $(packages[0]).find("packagePrice").text();
	var afterPrice = $(packages[0]).find("afterPrice").text();
	var boxPrice = $(packages[0]).find("boxPrice").text();
	var priceDiff = $(packages[0]).find("pricediff").text();
	var caveat = $(packages[0]).find("caveat").text();
	
	$("#addInfo").text(selectedPack);
	$("#packagePrice").text(packagePrice);
	$(".tariffBadge .colourBadge").attr({src: imageSource});
	$("#boxPrice").text(boxPrice);
	$("#afterPrice").text(afterPrice);
	$("#caveat").text(caveat);
	$("#diff").text(priceDiff);
	
	//this part takes care of the chooser in a bigger scenario along with packages
	if($("#packageBasket").length !== 0){
		if(numberOfPacks == 2 || numberOfPacks >2){
			var catCont = $("#tv_packs");
			var packContainer = $("#tv_packs .packContainer");
			var itemName = $("#tv_packs .packContainer .packName");
			var itemMonth = $("#tv_packs .packContainer .monthPrice");
			var itemsPack = $("#tv_packs .packContainer");
			var afterText = $("#tv_packs .afterName");
			var after3Price = $("#tv_packs .afterPrice");
			
			//showing off one off cost for the equipment
			$(".hardware").removeClass("hidden");
			$("#boxPrice").removeClass("hidden");
			
			if(packContainer.length > 0){
				var packName = $("#tv_packs .packContainer .packName").text();
				
				if(packName !== selectedPack ){
					$(itemName).text(selectedPack);
					$(itemName).attr({"rel":packageName});
					$(itemMonth).text(packagePrice);
					$(afterText).text("After 3 months cost");
					$(after3Price).text(afterPrice);
					$(itemsPack).effect('highlight', {color:"#faadd5"}, 1000);
				}
			}
			else{
				var itemsCont = document.createElement("div");
					$(itemsCont).addClass("packContainer");
					catCont[0].appendChild(itemsCont);
				
				var packDetails = document.createElement("span");
					$(packDetails).addClass("packName");					
					$(packDetails).attr({"rel":packageName});
					$(packDetails).text(selectedPack);
					itemsCont.appendChild(packDetails);
					
				var itemMonth = document.createElement("span");
					$(itemMonth).addClass("monthPrice");					
					$(itemMonth).text(packagePrice);
					itemsCont.appendChild(itemMonth);
					$(itemsCont).effect('highlight', {color:"#faadd5"}, 1000);
					
				var after3MonthText = document.createElement("span");
					$(after3MonthText).addClass("afterName");					
					$(after3MonthText).text("After 3 months cost");
					itemsCont.appendChild(after3MonthText);
				
				var after3MonthPrice = document.createElement("span");
					$(after3MonthPrice).addClass("afterPrice");					
					$(after3MonthPrice).text(afterPrice);
					itemsCont.appendChild(after3MonthPrice);
			}
	
		}
		else{
			$("#tv_packs .packContainer").remove();
			$(".hardware").addClass("hidden");
			$("#boxPrice").addClass("hidden");
		}
		
		conditionalShow();
		validPack();
		leidenPacks();
	}
	
	if(numberOfPacks == 2 || numberOfPacks >2){
		var infoContainer = $("#addInfo");		
		var packNumbers = document.createElement("span");
			$(packNumbers).addClass("numberPack");
			$(packNumbers).text(numberPacks);
		infoContainer[0].appendChild(packNumbers);			
		var includedPacks = document.createElement("span");	
			$(includedPacks).addClass("packInclude");
			$(includedPacks).text(packsIncluded);
		infoContainer[0].appendChild(includedPacks);		
		$(".regularInfo").removeClass("hidden");
	}else{
		$(".regularInfo").addClass("hidden");
	}	
	costCalculator();
	queryGenerator();
	calculatePrice();
}

function costCalculator(){
	var monthlyElements = $(".C_monthly");
	var onceElements = $(".C_once");	
	var monthlyCost = 0;
	var onceCost = 0;
	var caveat = "";
	for(k=0; k<monthlyElements.length; k++){
		var monthcostEl = $(monthlyElements[k]).text();
		monthcostEl = parseFloat(monthcostEl);
		var monthlyCost = monthlyCost + monthcostEl;
	}	
	for(j=0; j<onceElements.length; j++){
		var onecostEl = $(onceElements[j]).text();		
		var lastChar = onecostEl.length - 1;
		var caveat = $("#caveat").text();
		onecostEl = parseFloat(onecostEl);
		var onceCost = onceCost + onecostEl;		
	}
	var monthlyCost = Math.round(monthlyCost * 100)/100;
	var onceCost = Math.round(onceCost * 100)/100;
	$("#monthly").text(monthlyCost);
	$("#oneOff").text(onceCost + caveat);
}

function queryGenerator(){
	var packagesXMLDoc = $(xmlDoc).find("visionquery");
	var queryPacks = $("#incl li");
	var queryChannels = $("#channel li")
	var queryValue = $(packagesXMLDoc[0]).find("basevision").text();
	var defaultLocation = "/consumerProducts/util/vendorRedirector.jsp?productId=CON-26886&productKey=CON-VISION_ONLY"
	
		for(i=0; i<queryPacks.length; i++){
			var packValueID = $(queryPacks[i]).attr("id");
			var queryValue = queryValue + $(packagesXMLDoc[0]).find(packValueID).text();
			
			//var packValue = $(queryPacks[i]).text();			
			//var queryValue = queryValue + "&" + packValue + "=Y";
		}	
		for(i=0; i<queryChannels.length; i++){
			var channelValueID = $(queryChannels[i]).attr("id");
			var queryValue = queryValue + $(packagesXMLDoc[0]).find(channelValueID).text();
			
			//var channelValue = $(queryChannels[i]).text();
			//var queryValue = queryValue + "&" + channelValue + "=Y";
		}
		
		//this passes value to the chooser query generator	
		finalPackLink(queryValue);	
	
	
	
	if(queryPacks.length == 0){
		var queryValue = queryValue + "&BTV_VBOX_CHOICE_CHK=Z";
	}
	else{
		var queryValue = queryValue + "&IS_VAL_PCK_DEF=Y&BTV_STDSP_HIDE=Y&BTV_KIDS_HIDE=Y&BTV_MUSIC_HIDE=Y&BTV_PICBX_HIDE=Y&BTV_TVPCK_HIDE=Y&BTV_TVREP_HIDE=Y&BTV_VBOX_HIDE=Y&BTV_PW_AD_HIDE=Y&BTV_PACKS_CHANGE=Y"	
	}
	
	var queryString = defaultLocation + queryValue;	
	$(".queryButton").attr("href", queryString);
	
}

function specialSettings(){
	var channelPriceText = $("#channel .itemPrice");
	var channelListItem = $("#channel li");
	var packsSelected = $("#incl li").length;
	if(packsSelected == 2 || packsSelected > 2){
		$(channelPriceText).each(function(){
			$(this).text("Free");
			$(this).removeClass("C_monthly");
		})
	}else{		
		$(channelListItem).each(function(){
			var channelId = $(this).attr("id");
			var channel = channelId.split("_")[1];		
			var channelsAttr = $(xmlDoc).find(channel);
			var channelPackPrice = $(channelsAttr[0]).find("channelPrice").text();
			$(".itemPrice", this).text(channelPackPrice);
			$(".itemPrice", this).addClass("C_monthly");
		})
	}
}


