/*
	$Id: handset.js 19904 2011-04-06 02:50:15Z mjhorne $
*/

function updateHandsetUnitDetails(pageURL)
{	
	var callbackArgs = new Array();
	callbackArgs['pageURL'] = pageURL;

	var ajax = new AJAX(showUpdateHandsetUnitDetails, callbackArgs);
	ajax.setResponseFormat("JSON");

	var url = getBaseURL() + pageURL + "get-product-details/";
	ajax.request(url);
	return false;
}


function showUpdateHandsetUnitDetails(args)
{
	var details = JSON.parse(args['response'], null);
	if(details)
	{
		$('#handsetDetails').html(details.summary);
		$('#specificationsTab').html(details.specifications);

		if(details.plans)
		{
			$('#plansTab').html(details.plans);
			$('#plansTab').removeClass('hidden');
			$('#plansHeader').show();
		}
		else
		{
			$('#plansTab').html('');
			$('#plansTab').addClass('hidden');
			$('#plansHeader').hide();
		}

		if(details.bonuses)
		{
			$('#bonusesTab').html(details.bonuses);
			$('#bonusesTab').removeClass('hidden');
			$('#bonusesHeader').show();
		}
		else
		{
			$('#bonusesTab').html('');
			$('#bonusesTab').addClass('hidden');
			$('#bonusesHeader').hide();
		}

		if(details.accessories)
		{
			$('#accessoriesTab').html(details.accessories);
			$('#accessoriesTab').removeClass('hidden');
			$('#accessoriesHeader').show();
		}
		else
		{
			$('#accessoriesTab').html('<p>There are no accessories for this handset</p>');
			$('#accessoriesTab').addClass('hidden');
			$('#accessoriesHeader').hide();
		}
		if(details.yourChoices)
		{
			$('#yourChoices').html(details.yourChoices);
			$('#yourChoices').show();
		}
		else
		{
			$('#yourChoices').html('');
			$('#yourChoices').hide();
		}


		showTab(details.url, 'specifications');
	}
}


function showTab(pageURL, index, disableBonusesDueToTwin)
{
	if(index == "bonuses")
	{
		var sjax = new SJAX();
		sjax.setResponseFormat("JSON");
		var url = getBaseURL() + pageURL + "tab-available/bonuses/";
		var response = sjax.request(url);
		if(response) 
		{
			displayMessage("detailsMessage", "tabs", response);
			return false;
		}
	}

	showGenericTab(pageURL, 'tabs', index);

	resizeBody("handsetBody", getComputedHeight("handsetDetails"));
	return false;
}


function showGenericTab(pageURL, parentID, index)
{
	var headerLink = document.getElementById(index + "Header");
	if(headerLink)
	{
		var header = headerLink.parentNode;
		if(header)
		{
			if(header.className.indexOf("activeTabHeader") == -1)
			{
				header.className += " activeTabHeader";
			}
		}
	}

	var tab = document.getElementById(index + "Tab");	
	if(tab)
	{
		if(tab.className.indexOf("activeTab") == -1)
		{
			tab.className += " activeTab";
		}
	}

	var parentNode = document.getElementById(parentID);
	for(var i = 0; i < parentNode.childNodes.length; i++)
	{
		if(parentNode.childNodes[i].className && (parentNode.childNodes[i].className.indexOf('tab') > -1))
		{
			var newIndex = parentNode.childNodes[i].id.substr(0, parentNode.childNodes[i].id.length-3);

			if(newIndex != index)
			{
				hideTab(newIndex);
			}
		}
	}	

	return false;
}


function hideTab(index)
{
	var headerLink = document.getElementById(index + "Header");
	var tab = document.getElementById(index + "Tab");

	if(headerLink)
	{
		var header = headerLink.parentNode;
		if(header)
		{
			header.className = "";
		}
	}

	if(tab)
	{
		tab.className = tab.className.replace(" activeTab", "");
		tab.className = tab.className.replace("activeTab", "");
	}
}


function selectScheduleItem(pageURL, scheduleItemID)
{
	var data = "";
	$('ul#plans li.category').each(function()
	{
		data += '&visiblePlanCategories[' + $(this).attr('id').substring(13) + ']=' 
					+ (!$(this).hasClass('hiddenPlanCategory') 
						&& !$(this).hasClass('planSwitchClosed'));

	});

	$('.contractSwitch').each(function()
	{
		if($(this).attr('checked'))
		{
			var id = $(this).attr('name').substring(15);

			data += '&contractLengths[' + id + '=' 
						+ $(this).val();
		}
	
	});

	$.ajax(
	{
		url: getBaseURL() + pageURL + "select-handset-plan-combo/" + scheduleItemID + "/",
		dataType: 'json',
		data: data,
		success: function(data, reponseStatus)
		{
			if((data['action'] == "selectScheduleItem") || (data['action'] == "deselectScheduleItem"))
			{	
				$('#plansTab').html(data['plans']);
				showYourChoices(data);
				showBonusesAndExtras(data);
				clearOutright();
				clearPrepaid();
			}
		}
	});
	return false;
}

function selectMobileBroadbandScheduleItem(pageURL, scheduleItemID)
{
	var data = "";
	$('ul#plans li.category').each(function()
	{
		data += '&visiblePlanCategories[' + $(this).attr('id').substring(13) + ']=' 
					+ (!$(this).hasClass('hiddenPlanCategory') 
						&& !$(this).hasClass('planSwitchClosed'));

	});

	$('.contractSwitch').each(function()
	{
		if($(this).attr('checked'))
		{
			var id = $(this).attr('name').substring(15);

			data += '&contractLengths[' + id + '=' 
						+ $(this).val();
		}
	
	});

	$.ajax(
	{
		url: getBaseURL() + pageURL + "select-handset-plan-combo/" + scheduleItemID + "/",
		dataType: 'json',
		data: data,
		success: function(data, reponseStatus)
		{
			if((data['action'] == "selectMobileBroadbandScheduleItem") || (data['action'] == "deselectMobileBroadbandScheduleItem"))
			{	
				$('#plansTab').html(data['plans']);
				showYourChoices(data);
				showBonusesAndExtras(data);
				clearOutright();
				clearPrepaid();
			}
		}
	});
	return false;
}



function selectPrepaid(pageURL, planID)
{
	var url = getBaseURL() + pageURL + "select-prepaid/" + planID + "/";

	var args = Array();
	args['pageURL'] = pageURL;

	var ajax = new AJAX(showSelectPrepaid, args);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
	return false;
}


function showSelectPrepaid(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		showYourChoices(response);
		showBonusesAndExtras(response);

		var selectedRow = document.getElementById("prepaid_" + response['planID']);
		if(selectedRow)
		{
			clearPrepaid();
			if(response['action'] == "selectPrepaid")
			{
				if(selectedRow.className.indexOf("active") < 0)
				{
					selectedRow.className += " active";
				}
			}
			else
			{
				selectedRow.className = selectedRow.className.replace(" active", "");
				selectedRow.className = selectedRow.className.replace("active", "");
			}
		}

		var moreDetailsLink = document.getElementById("prepaidMoreDetailsLink");
		if(moreDetailsLink)
		{
			moreDetailsLink.href = moreDetailsLink.href.replace(
					/\/[^\/]+\/view-terms-and-conditions/gi,
					"/" + response['planCategoryURL'] + "/view-terms-and-conditions");
		}

		clearOutright();
		clearScheduleItems();
	}
}


function selectOutright(pageURL)
{
	var url = getBaseURL() + pageURL + "select-outright/";

	var args = Array();
	args['pageURL'] = pageURL;

	var ajax = new AJAX(showSelectOutright, args);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
	return false;
}


function showSelectOutright(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		showYourChoices(response);
		showBonusesAndExtras(response);

		if(response['action'] == "selectOutright")
		{
			var outright = document.getElementById("outright");
			if(outright)
			{
				if(outright.className.indexOf("outrightActive") < 0)
				{
					outright.className += " outrightActive";
				}
			}
		}
		else
		{
			var outright = document.getElementById("outright");
			if(outright)
			{
				outright.className = outright.className.replace(" outrightActive", "");
				outright.className = outright.className.replace("outrightActive", "");
			}
		}

		clearPrepaid();
		clearScheduleItems();
	}
}


function showYourChoices(response)
{
	if(response['yourChoices'])
	{
		$('#yourChoices').html(response['yourChoices']);
	}
}


function showBonusesAndExtras(response)
{
	if(response['bonuses'])
	{
		$('#bonusesTab').html(response['bonuses']);
	}
}

function clearScheduleItems()
{
	$('span.selectedScheduleItem h5').removeClass('current');
	$('span.selectedScheduleItem h5').removeClass('active');
	clearPlans("planSelection");
}


function clearPrepaid()
{
	clearPlans("prepaidPlanSelection");
}

function clearPlans(type)
{
	var plans = document.getElementsByTagName("TR");
	if(plans)
	{
		for(var i = 0; i < plans.length; i++)
		{
			if(plans[i].className.indexOf(type) == 0)
			{
				plans[i].className = plans[i].className.replace(" active", "");
				plans[i].className = plans[i].className.replace("active", "");
			}
		}
	}
}


function clearOutright()
{
	var outright = document.getElementById("outright");
	if(outright)
	{
		outright.className = outright.className.replace(" outrightActive", "");
		outright.className = outright.className.replace("outrightActive", "");
	}
}


function selectBonus(pageURL, bonusID)
{
	var url = getBaseURL() + pageURL + "select-bonus-option/" + bonusID + "/";
	var ajax = new AJAX(showSelectBonus);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}


function showSelectBonus(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		if((response['action'] == "selectBonus") || (response['action'] == "deselectBonus"))
		{
			var yourChoices = document.getElementById("yourChoices");
			if(yourChoices && response['yourChoices'])
			{
				yourChoices.innerHTML = response['yourChoices'];
			}
		}
	}
}


function selectFreebie(pageURL, freebieID)
{
	var url = getBaseURL() + pageURL + "select-freebie/" + freebieID + "/";
	var ajax = new AJAX(showSelectFreebie);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}


function showSelectFreebie(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		if((response['action'] == "selectFreebie") || (response['action'] == "deselectFreebie"))
		{
			showYourChoices(response);
		}
	}
}

function selectComboDeal(pageURL, comboDealID)
{
	var url = getBaseURL() + pageURL + "select-combo-deal/" + comboDealID + "/";
	var ajax = new AJAX(showComboDeal);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}

function showComboDeal(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		if((response['action'] == "selectComboDeal") || (response['action'] == "deselectComboDeal"))
		{
			showYourChoices(response);
		}
	}
}

function clearComboDeal()
{
	var url = getBaseURL() + pageURL + "clear-combo-deal/";
	var ajax = new AJAX(showComboDeal);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}


function selectDataPack(pageURL, dataPackID)
{
	var url = getBaseURL() + pageURL + "select-data-pack/" + dataPackID + "/";
	var ajax = new AJAX(showDataPack);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}

function showDataPack(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		if((response['action'] == "selectDataPack") || (response['action'] == "deselectDataPack"))
		{
			showYourChoices(response);
		}
	}
}

function clearDataPack()
{
	var url = getBaseURL() + pageURL + "clear-data-pack/";
	var ajax = new AJAX(showDataPack);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}

function selectTextPack(pageURL, textPackID)
{
	var url = getBaseURL() + pageURL + "select-text-pack/" + textPackID + "/";
	var ajax = new AJAX(showTextPack);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}

function showTextPack(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		if((response['action'] == "selectTextPack") || (response['action'] == "deselectTextPack"))
		{
			showYourChoices(response);
		}
	}
}

function clearTextPack()
{
	var url = getBaseURL() + pageURL + "clear-text-pack/";
	var ajax = new AJAX(showTextPack);
	ajax.setResponseFormat("JSON");
	ajax.request(url);
}

function validatePromotion(pageURL)
{
	var url = getBaseURL() + pageURL;
	var ajax = new AJAX(showValidatePromotion);
	ajax.setMethod("POST");
	ajax.setResponseFormat("XHTML");

	var promotionalCode = document.getElementById("promotionalCodeValue");
	if(promotionalCode)
	{
		ajax.setPayload("promotionalCode=" + promotionalCode.value);
		ajax.request(url);
	}

	return false;
}


function showValidatePromotion(args)
{
	var promotionalCode = document.getElementById("promotionalCodeValue");
	var promotionalCodeResult = document.getElementById("promotionalCodeResult");

	if(!promotionalCodeResult)
	{
		var fieldset = promotionalCode.parentNode;
		if(fieldset)
		{
			promotionalCodeResult = document.createElement("DIV");
			promotionalCodeResult.id = "promotionalCodeResult";
			fieldset.appendChild(promotionalCodeResult);
		}
	}
	if(promotionalCodeResult)
	{
		promotionalCodeResult.innerHTML = args['response'];
	}
}


function addAccessory(callingURL, accessoryURL, id, isUpdate)
{
	var url = getBaseURL() + accessoryURL + "/add-item-to-shopping-trolley/";
	var ajax = new AJAX(showUpdateAccessory);
	ajax.setResponseFormat("JSON");
	ajax.setMethod("POST");

	var callbackArgs = new Array();

	callbackArgs['callingURL'] = callingURL;
	callbackArgs['accessoryURL'] = accessoryURL;
	callbackArgs['id'] = id;
	if(isUpdate)
	{
		callbackArgs['notificationAction'] = 'update';
	}
	else
	{
		callbackArgs['notificationAction'] = 'add';
	}

	ajax.setCallbackArgs(callbackArgs);

	var quantity = document.getElementById("quantity_" + id);
	var quantityValue = 1;
	if(quantity)
	{
		quantityValue = quantity.value;
	}

	ajax.setPayload("trolley=handset&ajax=true&quantity=" + quantityValue + "&overwriteQuantity=true");
	ajax.setResponseFormat("JSON");
	ajax.request(url);	
	
	return false;
}


function updateAccessory(callingURL, accessoryURL, id)
{
	addAccessory(callingURL, accessoryURL, id, true);
}


function removeAccessory(callingURL, accessoryURL, pageURL, index, id)
{
	var url = getBaseURL() + pageURL + "/remove-item-from-trolley/";
	var ajax = new AJAX(showUpdateAccessory);

	ajax.setResponseFormat("JSON");

	var callbackArgs = new Array();

	callbackArgs['accessoryURL'] = accessoryURL;
	callbackArgs['callingURL'] = callingURL;
	callbackArgs['index'] = index;
	callbackArgs['id'] = id;
	callbackArgs['notificationAction'] = 'remove';
	ajax.setCallbackArgs(callbackArgs);
	ajax.request(url + index + "/?trolley=handset&ajax=true");

	return false;
}


function showUpdateAccessory(args)
{
	var response = JSON.parse(args['response']);
	if(response)
	{
		if(response['success'] == true)
		{
			var url = getBaseURL() + args['accessoryURL'] + "/get-product-details/accessory/" +  Base64Utils.prototype.encode(args['callingURL']);
			var sjax = new SJAX()
			sjax.setResponseFormat("JSON");

			var response = sjax.request(url);
			response = JSON.parse(response);

			if(response)
			{
				if(response['summary'])
				{
					$('#accessoryDetails').html(response['summary']);
				}
			}

			var url = getBaseURL() + args['callingURL'] + "/your-choices/JSON/";
			var sjax = new SJAX()
			sjax.setResponseFormat("JSON");

			var response = sjax.request(url);
			response = JSON.parse(response);

			if(response)
			{
				showYourChoices(response);
			}	
			
			var element = document.getElementById('actionNotification_' + args['id']);
			if(element)
			{
				if(args['notificationAction'] == 'add')
				{
					element.innerHTML = 'This item has been added to your choices';
				}
				else if(args['notificationAction'] == 'update')
				{
					element.innerHTML = 'This item has been updated in your choices';
				}
				else if(args['notificationAction'] == 'remove')
				{
					element.innerHTML = 'This item has been removed from your choices';
				}
			}
		} // response == true
	}
}


function addHandsetToCart(pageURL)
{
	var url = getBaseURL() + pageURL + "validate-add-handset/";
	var sjax = new SJAX();
	sjax.setResponseFormat("JSON");

	var response = sjax.request(url);

	if(response) 
	{
		displayMessage("detailsMessage", "tabs", response);
		return false;
	}
	else
	{
		return true;
	}
}


function displayAccessory(id, parentID, pageURL, callingPageURL)
{
	var url = getBaseURL() + pageURL + "get-product-details/accessory/" + Base64Utils.prototype.encode(callingPageURL);
	var sjax = new SJAX();
	sjax.setResponseFormat("JSON");

	var response = sjax.request(url);

	var summary = null;

	response = JSON.parse(response);

	if(!response['summary'])
	{
		return false;
	}

	showLightboxOverlay("handsetLightboxOverlay");

	var accessory = document.getElementById(id);

	if(!accessory)
	{
		accessory = document.createElement("DIV");
		accessory.id = id;
	}	

	var parentElement = document.getElementById(parentID);

	if(parentElement) 
	{
		document.body.appendChild(accessory);
	}

	var linkString = '<a id="accessoryClose" href="#" onclick="return hideAccessory(this);"><img src="' + getBaseURL() + 'core/images/public/products/close-button.gif" height="22px" width="51px" alt="close" /></a>';
	accessory.innerHTML = response['summary'] + linkString;
	accessory.style.display = "block";
	
	return false;
}


function hideAccessory(link)
{
	if(link && link.parentNode)
	{
		link.parentNode.style.display = "none";
		hideLightboxOverlay("handsetLightboxOverlay");
	}
	return false;
}


function togglePlanCategory(id)
{
	if($('#planCategory_' + id).attr('class').indexOf("hiddenPlanCategory") > -1)
	{
		$('#planCategory_' + id).removeClass("hiddenPlanCategory");
		var elementParent = $('#planCategory_' + id);

		var element = $('#planCategoryContents_' + id);
		if(element)
		{
			element.slideDown();
		}
		$('#planCategoryContents_' + id).removeClass('hiddenContents');
	}
	else
	{
		var element = $('#planCategoryContents_' + id);
		if(element)
		{
			if(element.attr('class').indexOf("hiddenContents") == -1)
			{
				$('#planCategory_' + id).addClass('planSwitchClosed');
				element.slideUp();
			}
			else
			{
				$('#planCategory_' + id).removeClass('planSwitchClosed');
				element.slideDown();
			}
			element.toggleClass('hiddenContents');
		}
	}

	/* solution for IE bug on plans page,
	 * footer was not moving with toggling prepaid/outright options
	 */
	var browserName=navigator.appName;
	if (browserName=="Microsoft Internet Explorer")
	{
		var element = document.getElementById("footer");
		if(element) 
		{
			element.style.visibility = "hidden";
			element.style.visibility = "visible";
		}
	}

	return false;
}


function displayFeaturePopup(id, pageURL, iteration)
{
	var element = document.getElementById("feature_" + id);

	var popupElement = document.getElementById("feature_popup_" + id);
	if(popupElement)
	{
		popupElement.style.visibility = "visible";
	}
	else 
	{	
		var url = getBaseURL() + pageURL + "get-feature-details/" + id + "/";
		var sjax = new SJAX();

		sjax.setResponseFormat("XHTML");
		var response = sjax.request(url);
		if(!response)
		{
			return false;
		}

		popupElement = document.createElement("div");
		popupElement.id = "feature_popup_" + id;
		popupElement.innerHTML = response;
		popupElement.style.visibility = "visible";
		popupElement.style.position = "absolute";
		popupElement.style.padding = "0px";
		popupElement.style.width = "265px";
		
		var browserName=navigator.appName;
		if (browserName=="Microsoft Internet Explorer")
		{
			popupElement.style.left = "0px";
			if(iteration > 1)
			{
				popupElement.style.marginLeft = "440px";
			}
			else
			{
				popupElement.style.marginLeft = "80px";
			}
			popupElement.style.marginTop = "-20px";
		}
		else
		{
			if(iteration > 1)
			{
				popupElement.style.marginLeft = "80px";
			}
			else
			{
				popupElement.style.marginLeft = "65px";
			}
			popupElement.style.marginTop = "-40px";
		}

		element.appendChild(popupElement);
	}
}


function hideFeaturePopup(id)
{
	document.getElementById("feature_popup_" + id).style.visibility = "hidden";
}


function displayFreebie(pageURL, link, comboID)
{
	var overlay = createFreebieOverlay(link.id);
	var callbackArgs  = new Array();
	callbackArgs['parentID'] = link.id;

	var ajax = new AJAX(displayFreebieCallback, callbackArgs);
	var url = getBaseURL() + pageURL + "/get-freebie-details/" + comboID + "/";
	ajax.setResponseFormat("XHTML");
	ajax.request(url);
	return false;
}
	


function displayFreebieCallback(args)
{
	var response = args['response'].replace(/^\s+|\s+$/g, '');
	if(response && (response != ""))
	{
		var overlay = createFreebieOverlay(args['parentID']);
		$('#' + overlay.id).html(response);
		$('#freebieOverlay').removeClass('freebieOverlayHidden');
	}
}


function createFreebieOverlay(parentID)
{
	var overlay = document.getElementById('freebieOverlay');
	var overlayInner = document.getElementById('freebieOverlayInner');
	if(!overlayInner)
	{
		overlay = document.createElement("DIV");
		overlay.id = "freebieOverlay";
		var overlayInner = document.createElement("DIV");
		overlayInner.id = "freebieOverlayInner";
		overlay.appendChild(overlayInner);
	}

	parentNode = document.getElementById(parentID);
	if(parentNode)
	{
		parentNode.appendChild(overlay);
	}

	overlay.className = 'freebieOverlayHidden';
	return overlayInner;
}


function hideFreebie()
{
	var overlay = document.getElementById('freebieOverlay');
	if(overlay)
	{
		overlay.parentNode.removeChild(overlay);
	}
}


function selectContractLength(pageURL, planCategory, contractLength)
{
	var data = "";
	$('ul#plans li.category').each(function()
	{
		data += '&visiblePlanCategories[' + $(this).attr('id').substring(13) + ']=' 
					+ (!$(this).hasClass('hiddenPlanCategory') 
						&& !$(this).hasClass('planSwitchClosed'));
	});

	$.ajax(
	{
		url: getBaseURL() + pageURL + "/select-contract-length/" + planCategory + "/" + contractLength + "/",
		dataType: 'json',
		data: data,
		success: function(data, reponseStatus)
		{
			$('#plansTab').html(data['plans']);
			$('#yourChoices').html(data['yourChoices']);
			showBonusesAndExtras(data);
		}
	});
	return false;
}

