

	var s7ServerURL = 'http://s7d5.scene7.com/is/image/';		// URL for the image server
	var s7Company = 'TerritoryAhead';		// IPS company name
	var s7PreviewModifiers = '?$pdppreview_360$';	// Image serving modifiers for the preview image
	
//	var s7SwatchTemplate = '/selectedSwatch?$pdpswatchtemplate$';	// Image serving call for the selected swatch
	var s7SwatchTemplate = '/pdpswatchon?$pdpswatchlrgtemplate$';	// Image serving call for the selected swatch
//	var s7regularSwatchTemplate = '/regularSwatch?$pdpswatchtemplate$';	// Image serving call for the unselected swatches
	var s7regularSwatchTemplate = '/pdpswatchoff?$pdpswatchlrgtemplate$';	// Image serving call for the unselected swatches
	var s7SwatchLayer_1 = '&$layer_1_src=TerritoryAhead/template_border';
	var s7SwatchLayer_2 = '&$layer_2_src=TerritoryAhead/';  //template_swatch';
	var s7SwatchLayer_3 = '&$layer_1_text_0=';
	
	var s7ZoomViewerURL = 'http://s7d5.scene7.com/is-viewers-3.8/flash/genericzoom.swf?serverUrl=http://s7d5.scene7.com/is/image&image=';		// Zoom viewer URL
	
	
	var s7ZoomViewerModifiersWithoutColorCodes ='&contentRoot=http://s7d5.scene7.com/skins/&singleImageSwatch=false&skin=TerritoryAhead/SWFs/TerritoryAheadIncFG.swf&config=TerritoryAhead/ttaconfig&color=';
	
	var zoomButtonOn = '/text/scene7/buttonon.jpg';		// Path to the zoom button in on rollover state
	var zoomButtonOff = '/text/scene7/buttonoff.jpg';	// Path to the zoom button in off rollover state
		
	var swatchSuffix = '_sw';		// Suffix that is appended to the swatch images in IPS
	var activeColorName = '';		// Do not edit
	
	
	var availColorArray;			// Do not edit
	var availColorNamesArray;		// Do not edit
	
	var overrideColorCode;			// URL based override of ML selected active
	var activeColorCodeAlt = '';			// Required for Alt views matching preview image
	var s7maxAltCount = 5;
	var s7altWidth = '70';
	var s7altHeight = '88';
	var s7thumbpresetRef = '$pdppreviewimage$';
	var altImageContent = '';

	
	
	if(!bInCQS){
	
	var s7ZoomViewerModifiers = '&contentRoot=http://s7d5.scene7.com/skins/&singleImageSwatch=false&skin=TerritoryAhead/SWFs/TerritoryAheadIncFG.swf&config=TerritoryAhead/ttaconfig&color=' + colorCodes;	// Zoom viewer modifiers
	var maxSwatches = 16;			// Maximum number of swatches available
	if (iArraySize != 'undefined' && iArraySize <= 16)  {
		var maxSwatches = iArraySize;			// Maximum number of swatches available
	}
		s7SetupPreview();	
	}
	
	
	// Calls all required functions upon page load to populate the page with the default options
	function s7SetupPreview() {
	
		if (colorCodes != "") {
			colorCodesArray = colorCodes.split('|');
			colorNamesArray = colorNames.split('|');
			setActiveColor();
			setupPreviewImage();
		} else {
			document.getElementById('previewImage').src = LocalBackupImagePath;		
		}
	}

	function s7OverrideSearchUrl(name) {
	  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	  var regexS = "[\\?&]"+name+"=([^&#]*)";
	  var regex = new RegExp(regexS);
	  var results = regex.exec(window.location.href);
	  if(results == null)
		return "";
	  else
		return results[1];
	}

	function s7validateOverrideCodeUrl(needle, haystack, strict) {
		var found = false; 
		var key;
		var strict = !!strict;
	 
		for (key in haystack) {
			if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
				found = true;
				break;
			}
		}
		return found;
	}	
	
	// Sets the active color upon load
	function setActiveColor() {
	
		var overrideColor = s7OverrideSearchUrl('orcc');
		if(overrideColor != "") {
			if(s7validateOverrideCodeUrl(overrideColor,colorCodesArray,1)){
				activeColorCode = overrideColor;
			}
		}
		if (activeColorCode != "") {
			for (i=0;i<colorCodesArray.length;i++) {
				if (activeColorCode == colorCodesArray[i])
					activeColorName = colorNamesArray[i];
			}		
		} else {
			activeColorCode = colorCodesArray[0];
			activeColorName = colorNamesArray[0];		
		}
	}
	
	// Updates the preview image
	function updatePreviewImage() {
	
		var previewImageSrc= s7ServerURL + s7Company + '/' + productID + '_' + activeColorCode + s7PreviewModifiers;
		document.getElementById('previewImage').src = previewImageSrc;
		
	}
	
	// Sets the preview image upon load
	function setupPreviewImage() {
			
		var zoomOnlyPreviewImageSrc = s7ServerURL + s7Company + '/' + productID + '_ZZZZ' + s7PreviewModifiers;
		var previewImageSrc= s7ServerURL + s7Company + '/' + productID + '_' + activeColorCode + s7PreviewModifiers;

		var imageExists = new Image;
		imageExists.onload=function() {
			document.getElementById('previewImage').src = zoomOnlyPreviewImageSrc;
			activeColorCode = "ZZZZ";
			
		}
		imageExists.onerror=function() {
			document.getElementById('previewImage').src = previewImageSrc;
			setupSwatches();

			document.getElementById('activeColorText').innerHTML = activeColorName;
			document.getElementById('moreColorText').innerHTML = '';
		}
		
		imageExists.src = zoomOnlyPreviewImageSrc;

		document.getElementById('enlargeButtonImage').innerHTML = '<img name=\"enlargeButton\" src=\"' + zoomButtonOff + '\" style=\"border:none;\" onclick=\"loadPopupViewer();\" onmouseover=\"document.enlargeButton.src=\'' + zoomButtonOn + '\'\" onmouseout=\"document.enlargeButton.src=\'' + zoomButtonOff + '\'\" />';
		
	}

	// Populates the swatches upon load
	function setupSwatches() {
		if (colorCodesArray.length > 0) {
		
			for (i=0;i<colorCodesArray.length;i++) {
				if(activeColorCode == colorCodesArray[i])
				{
					var swatchImageSource = s7ServerURL + s7Company + s7SwatchTemplate + s7SwatchLayer_1 + s7SwatchLayer_2 + productID + '_' + activeColorCode + swatchSuffix + s7SwatchLayer_3 + '';					
				} else {
					var swatchImageSource = s7ServerURL + s7Company + s7regularSwatchTemplate + '&$layer_1_src=' + s7SwatchLayer_2 + productID + '_' + colorCodesArray[i] + swatchSuffix + s7SwatchLayer_3 + '';			
				}

				var swatch = 'swatch_' + i;
				document.getElementById(swatch).src = swatchImageSource;
				document.getElementById(swatch).style.display = 'inline';
			}
		}
	}

	// Handles the selection of a swatch when a swatch is clicked
	function handleSwatchClick(index) {
	
		activeColorCode = colorCodesArray[index];
		activeColorName = colorNamesArray[index];
		
		document.getElementById('activeColorText').innerHTML = activeColorName;
		
		updatePreviewImage();
		jQuery('#previewAlt').attr('src',s7ServerURL + s7Company + '/' + productID + '_' + activeColorCode + s7PreviewModifiers +'&wid=' + s7altWidth + '&hei=' + s7altHeight);
		jQuery('#previewAlt').click(function() { 
			updatePreviewImagewColor(activeColorCode);
		});
		for (i=0;i<colorCodesArray.length;i++) {
			var swatch = 'swatch_' + i;
			
			if (i != index) {
				var swatchImageSource = s7ServerURL + s7Company + s7regularSwatchTemplate + '&$layer_1_src=' + s7SwatchLayer_2 + productID + '_' + colorCodesArray[i] + swatchSuffix;
				document.getElementById(swatch).src = swatchImageSource;
			} else {
				// this is the selected swatch
				document.getElementById(swatch).src = s7ServerURL + s7Company + s7SwatchTemplate + s7SwatchLayer_1 + s7SwatchLayer_2 + 
														productID + '_' + activeColorCode + swatchSuffix + s7SwatchLayer_3 + '';		
			}
		}
	}
	
	// Handles the roll over of a swatch when a swatch is rolled over
	function handleSwatchOver(index) {
	
		rolledColorName = colorNamesArray[index];		
		// document.getElementById('activeColorText').innerHTML = rolledColorName;
		document.getElementById('swatch_'+index).title = rolledColorName;

	}
	
	// Handles the roll over of a swatch when a swatch is rolled over
	function handleSwatchOff() {
		
		// document.getElementById('activeColorText').innerHTML = activeColorName;

	}

	// Pops up the zoom viewer
	function loadPopupViewer() {
	
		if (colorCodes != "") {
			var s7Zoom = s7ZoomViewerURL + s7Company + '/' + productID + '&activeColor=' + activeColorCode + s7ZoomViewerModifiers;
			var popupViewer = window.open(s7Zoom, '', 'location=0,status=0,scrollbars=0,width=563,height=660');
		} else {
			return false;
		}
	}
	
	// Pops up the zoom viewer on the CQS page
	function loadPopupViewerCQS(productID , activeColorCode , colorCodes) {
	
	
		if(activeColorCode==''){
			// Take first entry of colorCodes for activeColorCode. activeColor is required by Scene 7 zoom view
			activeColorCode = colorCodes.split('|')[0];
		}
		if (colorCodes != ''){
		
			// Test for ZZZZ presence of zoom only not colorized
			testcqsimgS7url = s7ServerURL + s7Company + '/' + productID + '_ZZZZ?' + s7thumbpresetRef + '&wid=1&hei=1';
			var img = new Image();							
			jQuery(img).load(function () {
				  //     
				var s7Zoom = s7ZoomViewerURL + s7Company + '/' + productID + '&activeColor=ZZZZ' + s7ZoomViewerModifiersWithoutColorCodes + colorCodes;	
				var popupViewer = window.open(s7Zoom, '', 'location=0,status=0,scrollbars=0,width=563,height=660');
			})
			.error(function () {
				// notify the user that the image could not be loaded
				var s7Zoom = s7ZoomViewerURL + s7Company + '/' + productID + '&activeColor=' + activeColorCode + s7ZoomViewerModifiersWithoutColorCodes + colorCodes;	
				var popupViewer = window.open(s7Zoom, '', 'location=0,status=0,scrollbars=0,width=563,height=660');	
			})
			.attr('src',testcqsimgS7url);

		} else { 
		 	return false;
		}
		
	}

	// Alt Views 
	
	// Handles the selection of a swatch when a swatch is clicked
	function handleAltClick(index) {
			
		var previewImageSrc= s7ServerURL + s7Company + '/' + productID + '_alt' + index + s7PreviewModifiers;
		document.getElementById('previewImage').src = previewImageSrc;
		
	}
	
	// Updates the preview image
	function updatePreviewImagewColor(colorCode) {
	
		var previewImageSrc= s7ServerURL + s7Company + '/' + productID + '_' + colorCode + s7PreviewModifiers;
		document.getElementById('previewImage').src = previewImageSrc;
		// reset swatch to this preview image
		var resetIndex;
		for (i=0;i<colorCodesArray.length;i++) {
			if(colorCode == colorCodesArray[i]){
				resetIndex = i;
			}
			// var resetSwatch = 'swatch_' + resetIndex;			
			if (i != resetIndex) {
				var swatchImageSource = s7ServerURL + s7Company + s7regularSwatchTemplate + '&$layer_1_src=' + s7SwatchLayer_2 + productID + '_' + colorCodesArray[i] + swatchSuffix;
				document.getElementById('swatch_'+i).src = swatchImageSource;
			} else {
				// this is the selected swatch
				document.getElementById('swatch_'+i).src = s7ServerURL + s7Company + s7SwatchTemplate + s7SwatchLayer_1 + s7SwatchLayer_2 + 
														productID + '_' + colorCodesArray[resetIndex] + swatchSuffix + s7SwatchLayer_3 + '';
			}			
		}
		if(colorNamesArray[resetIndex]){
			document.getElementById('activeColorText').innerHTML = colorNamesArray[resetIndex];
		}

	}	


	// Determine and populate alt view
	function setupAltViews() {
				
            var img = new Image();
            
			// Create the img to populate by test
			jQuery('#altArea').html('<img id="previewAlt" src="" border="0" onclick="">');
			
			// Test src for ZZZZ
			var zoomOnlyPreviewImageSrcAlt = s7ServerURL + s7Company + '/' + productID + '_ZZZZ' + s7PreviewModifiers +'&wid=' + s7altWidth + '&hei=' + s7altHeight;
						
			// Create image and onload parameters with key on activeColorCodeAlt
			var imageExistsAlt = new Image;
			imageExistsAlt.onload=function() {
				activeColorCodeAlt = "ZZZZ";
				jQuery('#previewAlt').attr('src',s7ServerURL + s7Company + '/' + productID + '_' + activeColorCodeAlt + s7PreviewModifiers +'&wid=' + s7altWidth + '&hei=' + s7altHeight);
				jQuery('#previewAlt').click(function() { 
					updatePreviewImagewColor(activeColorCodeAlt);
				});

			}
			// ZZZZ image does not exist get activeColorCode for second try
			imageExistsAlt.onerror=function() {
				activeColorCodeAlt = activeColorCode;
				jQuery('#previewAlt').attr('src',s7ServerURL + s7Company + '/' + productID + '_' + activeColorCodeAlt + s7PreviewModifiers +'&wid=' + s7altWidth + '&hei=' + s7altHeight);
				jQuery('#previewAlt').click(function() { 
					updatePreviewImagewColor(activeColorCodeAlt);
				});
			}
			
			// Must place image for onload to fire
			imageExistsAlt.src = zoomOnlyPreviewImageSrcAlt;

			// Get all Alt images 
			for (i=1; i < s7maxAltCount+1 ;i++){
				
				var img = new Image();
				img.src = s7ServerURL + s7Company + '/' + productID + '_alt' + i + '?' + s7thumbpresetRef + '&wid=' + s7altWidth + '&hei=' + s7altHeight;
				
				if(i == 1){
					altImageContent += '<img id="alt' + i + '" onclick="handleAltClick(' + i + ');" src="' + s7ServerURL + s7Company + '/' + productID + '_alt' + i + '?' +s7thumbpresetRef + '&wid=' + s7altWidth + '&hei=' + s7altHeight + '" onload="onLoadAltView();" onerror="onErrorAltView'+i+'(' + i + ')">';
				} else {
					altImageContent += '<img id="alt' + i + '" onclick="handleAltClick(' + i + ');" src="' + s7ServerURL + s7Company + '/' + productID + '_alt' + i + '?' +s7thumbpresetRef + '&wid=' + s7altWidth + '&hei=' + s7altHeight + '" onload="onLoadAltView();" onerror="onErrorAltViews(' + i + ')">';				
				}
			}
			jQuery('#altArea').append(altImageContent);
			
	}
	function onErrorAltView1(index) {
		jQuery('#alt'+index).remove();
		jQuery('#altAreaTitle').remove();
		jQuery('#altArea').html('');
	}
	function onErrorAltViews(index) {
		jQuery('#alt'+index).remove();
	}
	function onLoadAltView() {
		jQuery('#altAreaWrap').removeClass('altAreaWrapHide').addClass('altAreaWrapShow');
	}

	if(!bInCQS){
		// Write in the div container for the alt views
		document.writeln('<div id="altAreaWrap" class="altAreaWrapHide"><div id="altAreaTitle">Alternative Views</div><div id="altArea"></div></div>');
		
		jQuery(document).ready(function() {
			setupAltViews();
		});
	}