function IndexProductDisplay(product){
	this.product = product;

	var swatchElements = new Object();
	var currentlyDisplayedImageUrl;
	var requestedProductColorName;
	var lookForPlainProductImage;
	var requestedProductColorCode;

	this.init = function(){
		for(var i = 0;i < product.colorCodes.length;i++){
			swatchElements[product.colorCodes[i]] = document.getElementById('p' + product.productNumber + "_" + product.colorCodes[i]);;	
		}
		lookForPlainProductImage="true";
	}

	this.clearSwatches = function(){
		var property;
		var swatchElementstemp = swatchElements;
		for(property in swatchElements){
	    	swatchElements[property].className = "swatch";
	    }	
	}
	
	this.selectSwatch = function(colorCode){
		swatchElements[colorCode].className = "swatchSelected";
	}

	this.setCurrentlyDisplayedImageUrl = function(imageUrl){
		currentlyDisplayedImageUrl =  imageUrl;
	}
	
	this.getCurrentlyDisplayedImageUrl = function () {
		return currentlyDisplayedImageUrl;
	}

	this.setRequestedProductColorName = function(colorName){
		requestedProductColorName =  colorName;
	}
	
	this.getRequestedProductColorName = function () {
		return requestedProductColorName;
	}
	
	this.shouldLookForPlainProductImage = function() {
		return lookForPlainProductImage;
	}
	this.setLookForPlainProductImage = function(value) {
		lookForPlainProductImage = value;
	}
	this.setRequestedProductColorCode = function(colorCode){
		requestedProductColorCode =  colorCode;
	}
	this.getRequestedProductColorCode = function(){
		return requestedProductColorCode;
	}
	
}

function Product(productNumber){
	var thisProduct = this;
	this.productNumber = productNumber;
	this.colorCodes;
	this.colorCodesByFeature = new Array();
}

function initProducts(){
	var property;
	for(property in products){
		products[property].init();
	}
}

            function productImageLoadError(productImageElement, prdtNum, firstSwatchProductImageUrl, styleNumber)
            {
            	if (productImageElement.src.indexOf(firstSwatchProductImageUrl) == -1)
            	{
            		if (isOCSStore && products['p_' + prdtNum].shouldLookForPlainProductImage() == "true") {
            			var imageWithoutLogo = '/lebowebcontent/images/product/' + styleNumber.substr(0,2) + '/' + styleNumber + products['p_' + prdtNum].getRequestedProductColorCode() + 'INDX.jpg';
						products['p_' + prdtNum].setLookForPlainProductImage('false');           			
            			setImageSource(productImageElement, imageWithoutLogo);           			
            		} else {		            		        
	            		var errorDiv = document.getElementById("prodError_"+prdtNum);
	            		var errorTextDiv = document.getElementById("prodErrorText_"+prdtNum);
		            	var msg = "Sorry, this photograph is not color changeable to " + products['p_' + prdtNum].getRequestedProductColorName();
	            		errorTextDiv.innerHTML = msg;		
	            		setImageSource(productImageElement, products['p_' + prdtNum].getCurrentlyDisplayedImageUrl());
	            		errorDiv.style.display='block'; 
	            		setTimeout("document.getElementById('prodError_"+prdtNum+"').style.display='none';", 3000);
	            	}

            	} else {
            		setImageSource(productImageElement, "/lebowebcontent/images/global/navigation/missing_image.jpg");
            	}
            }

            function swapProductImage(style,colorName, color,fistTwoDigitsOfStyle,logoName,logoLocation,product,defaultImagePath){
				 
                products['p_' + product].clearSwatches();  
                products['p_' + product].selectSwatch(color);
                products['p_' + product].setLookForPlainProductImage('true');
                document.getElementById('prodError_'+product).style.display='none';   
               
                var productImageUrl = null;
                
                if(isCorpSales && defaultImagePath == null){
                    logoName = "";
                    logoLocation = "";
                }
                                
                productImageUrl = "/lebowebcontent/images/product/" + fistTwoDigitsOfStyle +  "/" + style + color + "INDX" + logoName + logoLocation + ".jpg";            
                
                if(defaultImagePath != null){
                    productImageUrl = defaultImagePath;
                }
                            
                if(isAka){
                	var localDomain = "";
               		if(window.location.protocol.indexOf("https") == -1){
               			localDomain = "http://" + akaDomain;
               		}else{
               			localDomain = "https://" + secureAkaDomain;
               		}
                    productImageUrl = localDomain + productImageUrl;
                }
                
                var imageElement = document.getElementById('productImageBase' + product);
                products['p_' + product].setCurrentlyDisplayedImageUrl(imageElement.src);
                products['p_' + product].setRequestedProductColorName(colorName);  
                products['p_' + product].setRequestedProductColorCode(color);
                imageElement.src = productImageUrl;                
            } 
            
            function swapCcsProductImage(masterSwatchContainerElement){          
            	var style = masterSwatchContainerElement.id.split("_")[1];
            	var colorName = masterSwatchContainerElement.id.split("_")[2];
            	var color = masterSwatchContainerElement.id.split("_")[3];
            	var fistTwoDigitsOfStyle = masterSwatchContainerElement.id.split("_")[4];
            	var range = masterSwatchContainerElement.id.split("_")[5];
            	var product = masterSwatchContainerElement.id.split("_")[6];
            	var featureId = masterSwatchContainerElement.id.split("_")[7];
            
            	ccsProducts['p_' + product].clearSwatches(); 
            	document.getElementById('ccsProdError_'+product).style.display='none';
				document.getElementById('ccs_swatchColorName_'+product).innerHTML = "&nbsp;" + colorName;
			
                var productImageUrl = "/OCS/corpsales/images/prod/" + fistTwoDigitsOfStyle +  "/" + range + "/" + style + color + "BUYL.jpg";            

                if(isAka){
                	var localDomain = "";
               		if(window.location.protocol.indexOf("https") == -1){
               			localDomain = "http://" + akaDomain;
               		}else{
               			localDomain = "https://" + secureAkaDomain;
               		}
                    productImageUrl = localDomain + productImageUrl;
                }
            	
            	var imageElement = document.getElementById('ccsProductImageBase_' + product);
                ccsProducts['p_' + product].setCurrentlyDisplayedImageUrl(imageElement.src);
                ccsProducts['p_' + product].setRequestedProductColorName(colorName);    
                ccsProducts['p_' + product].currentSelectedSwatchColor = color;   
                ccsProducts['p_' + product].highlightDefaultSwatch(product,featureId,color);
                
            	imageElement.src = productImageUrl;  
            }

            function ccsProductImageLoadError(productImageElement, prdtNum, firstSwatchProductImageUrl)
            {
            	if (productImageElement.src.indexOf(firstSwatchProductImageUrl) == -1)
            	{		            		        
	            	var errorDiv = document.getElementById("ccsProdError_"+prdtNum);
	            	var errorTextDiv = document.getElementById("ccsProdErrorText_"+prdtNum);
		            var msg = "Sorry, this photograph is not color changeable to " + ccsProducts['p_' + prdtNum].getRequestedProductColorName();
	            	errorTextDiv.innerHTML = msg;		
	            	setImageSource(productImageElement, ccsProducts['p_' + prdtNum].getCurrentlyDisplayedImageUrl());
	            	errorDiv.style.display='block'; 
	            	setTimeout("document.getElementById('ccsProdError_"+prdtNum+"').style.display='none';", 3000);
            	} else {
            		setImageSource(productImageElement, "/lebowebcontent/images/global/navigation/missing_image_250.jpg");
            	}
            }
             
            function colorchipImageLoadError(colorchipImageElement)
            {
            	setImageSource(colorchipImageElement, "/lebowebcontent/images/global/navigation/missing_color.jpg");
            }
            
            function setImageSource(imageElement, imageFileName)
            {
            	// Check if the error is happening when we are trying to set the image file. 
            	// If Yes, then we are in a loop and need to bail out now.
            	var temp = imageElement.src;
                if (imageElement.src.indexOf(imageFileName) == -1)
            	{           	
            		// Error on loading the image. Show the missing product image file.           		
                	imageElement.src = imageFileName;
                }
            }  