﻿/* By now, jQuery has loaded! */
/* Product sizing calculation functions for us inline with sizing table */

function SizingTable(Product) {
	var Table;
	switch (Product) {
		case 'glg3':
			Table = [6.5, 'XXSmall', 7, 'XSmall', 8, 'Small', 8.5, 'Medium', 9, 'Large', 9.5, 'XLarge', 10, 'XXLarge', 10.5, 'XXXLarge', 11.5];
			break;
		case 'glhy':
			Table = [7.5, 'XSmall', 8, 'Small', 8.5, 'Medium', 9, 'Large', 9.5, 'XLarge', 10, 'XXLarge', 11, 'XXXLarge', 11.5];
			break;
		case 'glnu':
			Table = [7, 'XXSmall', 7.5, 'XSmall', 8, 'Small', 8.5, 'Medium', 9, 'Large', 9.5, 'XLarge', 10, 'XXLarge', 11, 'XXXLarge', 11.5];
			break;
		case 'glln':
			Table = [6.5, 'XXSmall', 7, 'XSmall', 7.5, 'Small', 8, 'Medium', 8.5, 'Large', 9, 'XLarge', 9.5, 'XXLarge', 10, 'XXXLarge', 10.5];
			break;
		case 'gllr':
			Table = [6.5, 'XSmall', 7, 'Small', 7.5, 'Medium', 8, 'Large', 8.5];
			break;
		case 'glt5':
			Table = [7, 'XXSmall', 7.5, 'XSmall', 8, 'Small', 8.5, 'Medium', 9, 'Large', 9.5, 'XLarge', 10, 'XXLarge', 11, 'XXXLarge', 11.5];
			break;
		case 'jkln':
			Table = [
				32.9, ['XXSmall', [29, 'Regular', 31, 'Long', 32]],
				34.9, ['XSmall', [31, 'Regular', 33, 'Long', 34]],
				36.9, ['XSmall/Small', [31, 'Regular', 33, 'Long', 34]],
				38.9, ['Small', [31, 'Regular', 33, 'Long', 34]],
				40.9, ['Medium', [33, 'Regular', 35, 'Long', 36]],
				42.9, ['Medium/Large', [33, 'Regular', 35, 'Long', 36]],
				44.9, ['Large', [33, 'Regular', 35, 'Long', 36]],
				46.9, ['Large/XLarge', [35, 'Regular', 37, 'Long', 38]],
				48.9, ['XLarge', [35, 'Regular', 37, 'Long', 38]],
				50.9, ['XXLarge', [37, 'Regular', 38]],
				53.9, ['XXXLarge', [37, 'Regular', 38]],
				57.9, ['XXXXLarge', [37, 'Regular', 38]],
				61
			];
			break;
		default:
			Table = [0, '[sizing not configured]', 999];
	}
	return Table;
}

function GetSizing(Product) {
	document.write('<div class="SizingApp">');

	var ProductCategory = '';
	var MeasurementPart1 = '';
	var MeasurementPartImg1 = '/images/';
	var MeasurementPart2 = '';
	var MeasurementPartImg2 = '/images/';
	if (Product.substring(0, 2) == 'gl') {
		ProductCategory = 'glove';
		MeasurementPart1 = 'hand';
		MeasurementPartImg1 += 'measurehand.gif';
		WriteOneMeasurement(Product, ProductCategory, MeasurementPart1, MeasurementPartImg1);
	} else if (Product.substring(0, 4) == 'jkln') {
		ProductCategory = 'jacket liner';
		MeasurementPart1 = 'chest';
		MeasurementPartImg1 += 'measure_chest.png';
		MeasurementPart2 = 'arm';
		MeasurementPartImg2 += 'measure_arm.png';
		WriteTwoMeasurements(Product, ProductCategory, MeasurementPart1, MeasurementPartImg1, MeasurementPart2, MeasurementPartImg2);
	}

	document.write('<div id="TextSize' + Product + '" class="SizingSize">Fill in your measurements.</div>');
	document.write('</div>');
}

function WriteOneMeasurement(Product, ProductCategory, MeasurementPart, MeasurementPartImg) {
	/* Image */
	document.write('<a href="' + MeasurementPartImg + '" rel="lytebox[001]"><img src="' + MeasurementPartImg + '" class="MeasureImage"><img class="MagnifyingGlass" src="/images/Magnifying Glass.png" alt="Magnify"></a>');

	document.write('<b>To find your best fitting ' + ProductCategory + ' size</b>, measure your ' + MeasurementPart + ' as shown on the left, and fill in your ' + MeasurementPart + ' measurement: ');
	document.write('<input id="TextMeasurement' + Product + '" type="text" value="" size="3" onKeyUp="UpdateSizing(\'' + Product + '\', \'' + MeasurementPart + '\');">');
	document.write(' inches.<br>');
}

function WriteTwoMeasurements(Product, ProductCategory, MeasurementPart1, MeasurementPartImg1, MeasurementPart2, MeasurementPartImg2) {
	/* Image */
	document.write('<a href="' + MeasurementPartImg1 + '" rel="lytebox[001]"><img src="' + MeasurementPartImg1 + '" class="MeasureImage"><img class="MagnifyingGlass" src="/images/Magnifying Glass.png" alt="Magnify"></a>');

	document.write('<b>To find your best fitting ' + ProductCategory + ' size</b>, measure your ' + MeasurementPart1 + ' as shown on the left, and fill in your ' + MeasurementPart1 + ' measurement: ');
	document.write('<input id="TextMeasurement1' + Product + '" type="text" value="" size="3" onKeyUp="UpdateSizing2(\'' + Product + '\', \'' + MeasurementPart1 + '\', \'' + MeasurementPart2 + '\');">');
	document.write(' inches.<br clear="all">');

	/* Image */
	document.write('<a href="' + MeasurementPartImg2 + '" rel="lytebox[001]"><img src="' + MeasurementPartImg2 + '" class="MeasureImage"><img class="MagnifyingGlass" src="/images/Magnifying Glass.png" alt="Magnify"></a>');

	document.write('Your ' + MeasurementPart2 + ' measurement: ');
	document.write('<input id="TextMeasurement2' + Product + '" type="text" value="" size="3" onKeyUp="UpdateSizing2(\'' + Product + '\', \'' + MeasurementPart1 + '\', \'' + MeasurementPart2 + '\');">');
	document.write(' inches.<br clear="all">');
}

function UpdateSizing(Product, MeasurePart) {
	var Measurement;
	Measurement = $('#TextMeasurement' + Product).val().trim();
	Measurement = Measurement.replace(',', '.');

	var Table;
	// One-dimensional array
	Table = SizingTable(Product);

	var Size;
	Size = GetSizeObject(Measurement, Table);
	if (Size == '<') {
		Size = 'Your ' + MeasurePart + ' measurement is too small.';
	} else if (Size == '>') {
		Size = 'Your ' + MeasurePart + ' measurement is too large.';
	} else {
		Size = 'Your size is ' + Size + '.';
	}

	$('#TextSize' + Product).text(Size);
	return false;
}

function UpdateSizing2(Product, MeasurePart1, MeasurePart2) {
	var Measurement1;
	Measurement1 = $('#TextMeasurement1' + Product).val().trim();
	Measurement1 = Measurement1.replace(',', '.');
	var Measurement2;
	Measurement2 = $('#TextMeasurement2' + Product).val().trim();
	Measurement2 = Measurement2.replace(',', '.');

	var Table1;
	// Nested array, 3 levels deep
	Table1 = SizingTable(Product);

	var Size; // full size string
	var SizeObj1, SizeObj2;
	// Get <, >, or 
	// the 2-level nested array with size and sleeve length array like so:
	// ['XXSmall',      [29, 'Regular', 31, 'Long', 32]]
	SizeObj1 = GetSizeObject(Measurement1, Table1);

	if (SizeObj1 == '<') {
		// chest too small
		Size = 'Your ' + MeasurePart1 + ' measurement is too small.';
	} else if (SizeObj1 == '>') {
		// chest too large
		Size = 'Your ' + MeasurePart1 + ' measurement is too large.';
	} else {
		// chest OK
		var Size2;
		SizeObj2 = GetSizeObject(Measurement2, SizeObj1[1]); // sleeve measurement, sleeve sizing mini array

		if (SizeObj2 == '<') {
			// sleeve too short
			Size = 'Your ' + MeasurePart2 + ' measurement is too small.';
		} else if (SizeObj2 == '>') {
			// sleeve too long
			Size = 'Your ' + MeasurePart2 + ' measurement is too large.';
		} else {
			// sleeve AND chest OK
			Size = 'Your size is ' + SizeObj1[0] + ' - ' + SizeObj2;
		}
	}
	

	$('#TextSize' + Product).text(Size);
	return false;
}

function GetSizeObject(Measurement, Table) {
	var SizeObject;
	if (Measurement < Table[0]) {
		SizeObject = "<";
	} else if (Measurement > Table[Table.length - 1]) { // upper size inclusive
		SizeObject = ">";
	} else {
		var LowSize;
		var HighSize;
		$.each(Table, function (index, value) {
			if (!(index % 2) && (index < Table.length - 1)) {
				// even results only, the measurements - not the sizes
				// skip the last size
				LowSize = value;
				HighSize = Table[index + 2];
				if ((LowSize < Measurement) && (Measurement <= HighSize)) { // upper size inclusive
					SizeObject = Table[index + 1];
				}
			}
		});
	}
	return SizeObject;
}

