﻿// JavaScript functions for Commerce module user controls.

/* CatalogItemImagesManager.ascx */
function catalogItemImagesManager_images_onSelect(prefix, idList)
{
	var field = document.getElementById(prefix + "_IDList");
	field.value = idList;
	window.setTimeout("__doPostBack('" + field.name + "','')",0);
}

/* CheckoutSignIn.ascx */
function checkoutSignIn_phoneNumbers_onValidate(sender,args)
{
	var prefix = sender.id.substring(0, sender.id.lastIndexOf("_"));
	
	//ensure at least one phone number has been entered
	args.IsValid = (phoneNumberFields_getValue(prefix + "_HomePhone").length > 0) ||
					(phoneNumberFields_getValue(prefix + "_MobilePhone").length > 0) ||
					(phoneNumberFields_getValue(prefix + "_WorkPhone").length > 0);					
}

/* LocationsManager.ascx */
function locationsManager_addressFields_onChange(prefix, prefixStripped)
{
	//incoming prefix will be from address fields, so we need to go one level higher
	if (!prefixStripped)
		prefix = prefix.substring(0,prefix.lastIndexOf("_"));
	
	document.getElementById(prefix + "_UseNew").checked = true;	
	locationsManager_useType_onChange(prefix);
}

function locationsManager_existing_onSelect(prefix)
{
	document.getElementById(prefix + "_UseExisting").checked = true;
	locationsManager_useType_onChange(prefix);
}

function locationsManager_useType_onChange(prefix)
{
	var useNewField = document.getElementById(prefix + "_UseNew");
	if (useNewField)
		addressFields_enable(prefix + "_AddressFields",useNewField.checked);
}

/* OrderItemsManager.ascx */
function orderItemsManager_catalogItem_onChange(prefix)
{
	var field = document.getElementById(prefix + "_CatalogItems");
	if (field)
	{
		var option = field.options[field.selectedIndex];
		var price = parseFloat(option.getAttribute("price"));
		
		//modify prefix for one level higher fields
		prefix = prefix.substring(0,prefix.lastIndexOf("_"));
		var priceField = document.getElementById(prefix + "_Price");
		priceField.value = price.toFixed(2);
	}
}

/* Public/ImageViewer.ascx */
function imageViewer_onSelect(prefix,ordinal)
{
	var countField = document.getElementById(prefix + "_ImageCount");
	if (countField)
	{
		var count = parseInt(countField.value);

		//hide all images and clear nav class
		for (var i=0; i<count; i++)
		{
			document.getElementById(prefix + "_Image" + i).style.display = "none";
			if (count > 1)
				document.getElementById(prefix + "_Nav" + i).className = "";
		}
		
		//set selected image and nav
		document.getElementById(prefix + "_Image" + ordinal).style.display = "block";
		if (count > 1)
			document.getElementById(prefix + "_Nav" + ordinal).className = "Active";
	
		//set last selected value
		document.getElementById(prefix + "_CurrentImage").value = ordinal;
	}
}

function imageViewer_increment(prefix,amount)
{
	var countField = document.getElementById(prefix + "_ImageCount");
	if (countField)
	{
		var count = parseInt(countField.value);
		var currentOrdinal = parseInt(document.getElementById(prefix + "_CurrentImage").value);
		var newOrdinal = currentOrdinal + amount;
		if (newOrdinal >=0 && newOrdinal < count)
			imageViewer_onSelect(prefix,newOrdinal);
	}
}

/* Public/OptionsView.ascx */
function optionsView_qty_onValidate(sender,args)
{
	var prefix = sender.id.replace("_QtyValidator","");
	var field = document.getElementById(prefix + "_Qty");
	
	//assume failure
	args.IsValid = false;
	
	//check for valid value
	if (!isNaN(field.value))
	{
		var value = parseFloat(field.value);
		args.IsValid = (value > 0);
	}
}

/* SalesReps/OrderSalesRepSelector.ascx */
function orderSalesRepSelector_onChange(prefix)
{
	var field = document.getElementById(prefix + "_SalesRepI");
	var option = field.options[field.selectedIndex];
	var commissionField = document.getElementById(prefix + "_Commission_Amount");
	
	if (commissionField) 
	{
		var typeField = document.getElementById(prefix + "_Commission_Unit");
		var commissionType = option.getAttribute("commissiontype");
		var commission = parseFloat(option.getAttribute("commission"));
		
		if (!isNaN(commission))
		{
			commissionField.value = (commissionType == "Amount") ? commission.toFixed(2) : (commission * 100).toFixed(2);
			typeField.value = commissionType;
		}
		else
		{
			commissionField.value = 0;
			typeField.value = "Amount";
		}
	}
}

/* Shipping/CarriersManager.ascx */
function carriersManager_carrier_onChange(prefix,setValues)
{
	var carrier = document.getElementById(prefix + "_CarrierType");
	var checkbox = document.getElementById(prefix + "_UPSCheckbox");
	var name = document.getElementById(prefix + "_CarrierName");
	var url = document.getElementById(prefix + "_TrackingUrl");
	var nameValue, urlValue;
	
	if (carrier)
	{
		var value = carrier.value;
		
		if (value == "FedEx")
		{
			checkbox.style.display = "none";
			nameValue = "FedEx";
			urlValue = "http://fedex.com/Tracking?action=track&cntry_code=us&tracknumber_list=-TrackingNumber-";
		}
		else if (value == "UPS")
		{
			checkbox.style.display = "block";
			nameValue = "UPS";
			urlValue = "http://wwwapps.ups.com/etracking/tracking.cgi?TypeOfInquiryNumber=T&InquiryNumber1=-TrackingNumber-&track=Track";
		}
		else if (value == "USPS")
		{
			checkbox.style.display = "none";
			nameValue = "USPS";
			urlValue = "http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?strOrigTrackNum=-TrackingNumber-";
		}
		else
		{
			checkbox.style.display = "none";
			nameValue = "";
			urlValue = "";
		}
		
		//set name and url, if requested
		if (setValues)
		{
			name.value = nameValue;
			url.value = urlValue;
		}
	}
}

function carriersManager_useIntegrated_checked(prefix)
{
	var chk = document.getElementById(prefix + "_UseIntegratedUPS");
	var upsFields = document.getElementById(prefix + "_UPSFields");
	
	if (chk)
		upsFields.style.display = chk.checked ? "block" : "none";
}

/* Shipping/ShippingFields.ascx */
function shippingFields_carrier_onChange(prefix)
{
	var field = document.getElementById(prefix + "_Carrier");
	if (field)
	{
		var carrierType = "";
		var o = field.options[field.selectedIndex];
		if (o)
			carrierType = o.getAttribute("carriertype");
		
		//show/hide UPS fields
		document.getElementById(prefix + "_UPSShippingMethodFields").style.display = (carrierType == "UPS") ? "block" : "none";
	}
}

function shippingFields_integrated_onClick(prefix)
{
	var field = document.getElementById(prefix + "_ShipRealTime");
	if (field)
	{
		var fields;
		
		fields = document.getElementById(prefix + "_UPSFields");
		if (fields) fields.style.display = field.checked ? "block" : "none";
		ValidatorEnable(document.getElementById(prefix + "_PackageCountValidator"),field.checked);
		document.getElementById(prefix + "_TrackingNumberFields").style.display = field.checked ? "none" : "block";
		document.getElementById(prefix + "_DescriptionFields").style.display = field.checked ? "block" : "none";
		ValidatorEnable(document.getElementById(prefix + "_DescriptionValidator"),field.checked);
		document.getElementById(prefix + "_PackagesBlock").style.display = field.checked ? "block" : "none";
	}	
}

function shippingFields_packageCount_onValidate(sender,args)
{
	var prefix = sender.id.substring(0, sender.id.lastIndexOf("_"));
	args.IsValid = parseInt(document.getElementById(prefix + "_PackageCount").value) > 0;
}

/* Shipping/ShippingMethodsManager.ascx */
function shippingMethodsManager_carrier_onChange(prefix)
{
	var field = document.getElementById(prefix + "_DefaultCarrier");
	if (field)
	{
		var carrierType = "";
		var o = field.options[field.selectedIndex];
		if (o)
			carrierType = o.getAttribute("carriertype");
		
		//show/hide UPS fields
		document.getElementById(prefix + "_UPSShippingMethodFields").style.display = (carrierType == "UPS") ? "block" : "none";
	}
}

function shippingMethodsManager_methodType_onChange(prefix)
{
	var field = document.getElementById(prefix + "_MethodType");
	if (field)
	{
		//regions
		document.getElementById(prefix + "_Regions").style.display = (field.value.indexOf("Regional") >= 0) ? "block" : "none";
		//price ranges
		document.getElementById(prefix + "_PriceRanges").style.display = (field.value.indexOf("PriceRange") >= 0) ? "block" : "none";
		//weight ranges
		document.getElementById(prefix + "_WeightRanges").style.display = (field.value.indexOf("WeightRange") >= 0) ? "block" : "none";
	}
}