var variantArray = new Array();
var myDropDowns = new Array();
$(document).ready(function() 
{
	EnableEnlargeImage();
	EnableAddToCartButton(false);
	ShowVariantDiv(false);
	variantArray = prodDefn.split(",");
	if(variantArray.length > 0 && prodDefn != "GenericProduct" && prodDefn != "Personalizable Product")
	{
		//Build the DropDown Ids from the count of variants located in the prodDefn global variable.
		for(var i=0; i < variantArray.length; i++) 
		{
			myDropDowns[i] = "AFLProductDetail1_ddlControl_ddl" + (i + 1);
		}
		var myLabels = new Array();
		for(var i=0; i < variantArray.length; i++) 
		{
			myLabels[i] = "AFLProductDetail1_ddlControl_lbl" + (i + 1);
		}
		if($("#" + myDropDowns[0] + "") != null)
		{
			ShowVariantDiv(true);
			GetVariantCollection(myDropDowns[0], myLabels[0], variantArray[0], '');
		}
	}
	else
	{
		RetrieveSKU('');
	}
});

function GetVariantCollection(ddlControl, lblControl, variant, identifier)
{
	$.ajax({
		type: "POST",
		url: "/babynest/ajaxpro/AFLWeddingWarehouse.Controls.Catalog.AFLProductDetail,AFLWeddingWarehouse.ashx",
		dataType: 'html',
		data: '{"productId":"' + productId + '", "catalogName":"' + catalogName + '", "variant":"' + variant + '", "identifier":"' + GetIdentifier() + '"}',
		beforeSend: function(xhr) {
			xhr.setRequestHeader("X-AjaxPro-Method", "GetVariantCollection");
		},
		success: function(s) {
			var o = null;
			eval("o = " + s);
			if(o.value.length > 0)
			{
				BuildVariantDropDown(o, variant, ddlControl, lblControl);
			}
			else
			{
				alert('Error retrieving data.');
				EnableAddToCartButton(false);
			}
		}
	});
}

function BuildVariantDropDown(o, variant, ddlControl, lblControl)
{
	if(o.value.length > 0  && ddlControl.length > 0 && variantArray.length > 0)
	{
		//Sets the CSS Class for the Label.
		$("#" + lblControl + "").addClass('GrayText').show();
		//Build the values for the first drop down.
		$("#" + ddlControl + "").removeOption(/./).addOption("--Select--", "--Select--");
		for (var count = 0; count < o.value.length; count++)
		{
			$("#" + ddlControl + "").addOption(o.value[count], o.value[count]);
		}
		$("#" + ddlControl + "").selectOptions("--Select--", true);
		
		//Hide the next variant dropdown.
		ShowControl(GetNextControl(lblControl), false);  
		ShowControl(GetNextControl(ddlControl), false); 
		$("#" + ddlControl + "").unbind("change");
		//Create the OnChange event for the drop down.
		$("#" + ddlControl + "").change(function()
		{
			if(this.selectedIndex == 0)
			{
				ShowControl(GetNextControl(lblControl), false);  
				ShowControl(GetNextControl(ddlControl), false);
				EnableAddToCartButton(false);
			}
			else
			{
				EnableAddToCartButton(false);
				if(jQuery.trim(variant) == "Color")
				{
					UpdateProductImage($("#" + ddlControl + "").val()); 
				}
					
				if($("#" + GetNextControl(this.id) + "").length > 0)
				{
					ShowControl(GetNextControl(ddlControl), true);
					ShowControl(GetNextControl(lblControl), true);
					$("#" + GetNextControl(this.id) + "").empty();
										
					GetVariantCollection(GetNextControl(this.id), GetNextControl(lblControl), variantArray[GetControlInt(this.id)], GetIdentifier());
				}
				else
				{
					RetrieveSKU(GetIdentifier());
				}
			}
		});
	}
}

function GetIdentifier()
{
	var retVal = '';
	for(var i=0; i < variantArray.length; i++)
	{
		var mystring = null;
		if($("#" + myDropDowns[i] + "").length > 0)
		{
			if($("#" + myDropDowns[i] + "").val() != null) {
				mystring = $("#" + myDropDowns[i] + "").val().replace("\"","\\\"").replace("'","\\'");
			}
			retVal = retVal + variantArray[i] + ":" + mystring + ",";
		}
	}
	return retVal.substring(0, retVal.length -1);
}

function GetControlInt(inControl)
{
	var retval = inControl.substring(inControl.length -1, inControl.length);
	return retval;
}

function GetSkuValue()
{
	var skuCollection = '';
	for(var i=0; i < variantArray.length; i++)
	{
		skuCollection += variantArray[i] + ":" + $("#" + myDropDowns[i] + "").val() + ",";
	}
	return skuCollection.substring(0, skuCollection.length - 1);
}

function GetPreviousControl(controlId)
{
	var inControlId = controlId.substring(0, controlId.length - 1);
	var inControlInt = parseInt(controlId.substring(controlId.length - 1, controlId.length)) - parseInt(1);
	var prevControlId = inControlId + inControlInt;
	return prevControlId;
}

function GetNextControl(controlId)
{
	var inControlId = controlId.substring(0, controlId.length - 1);
	var inControlInt = parseInt(controlId.substring(controlId.length - 1, controlId.length)) + parseInt(1);
	var nextControlId = inControlId + inControlInt;
	return nextControlId;
}

function ShowControl(controlId, isShown)
{
	if(isShown)
	{
		$("#" + controlId + "").show();
	}
	else
	{
		$("#" + controlId + "").selectOptions("--Select--", true);
		$("#" + controlId + "").hide();
		//Hide all subsequent controls.
		for(var i=0; i<variantArray.length; i++)
		{
			var nextControl = GetNextControl(controlId);
			if($("#" + nextControl + "").length > 0)
			{
				$("#" + nextControl + "").hide();
				if(variantArray[i] == " Color ")
				{
					$("#colorSwatches").hide();
				}
			}
		}
	}
}

function ShowVariantDiv(canShow)
{
	if(canShow)
	{
		$("#variantDDL").show();
	}
	else
	{
		$("#variantDDL").hide();
	}
}

//Variable to contain the original Image url.
var originalImageSrc = '';

function UpdateProductImage(color)
{
	//Get the original image url once the page is loaded.  If the color swatch does not exist
	//the use the original image in its place.
	if(originalImageSrc == '')
	{
		originalImageSrc = $("#AFLProductDetail1_imgProduct").attr("src");
	}

	var imgsrc = originalImageSrc.substring(0, originalImageSrc.indexOf('_m')) + "_m_color_" + color.replace(/ /g, '_') + ".jpg";
	var img = new Image();
	$(img).bind("load",function(){ShowImage(img, 'AFLProductDetail1_imgProduct');});
	img.onerror = function()
	{     
		return img.src = originalImageSrc;
	}
	img.src = imgsrc;
}

function ShowImage(img, controlId) 
{
	if(img.width == 0)
	{
		imgsrc = originalImageSrc;
	}
    $("#" + controlId + "").attr("src", img.src);
}

//Go the backend to retreive the final SKU to add the product to the shopping cart.
function RetrieveSKU(inVal)
{
	$.ajax({
		type: "POST",
		url: "/babynest/ajaxpro/AFLWeddingWarehouse.Controls.Catalog.AFLProductDetail,AFLWeddingWarehouse.ashx",
		dataType: 'html',
		data: '{"variant":"' + inVal + '", "productId":"' + productId + '", "catalogName":"' + catalogName + '"}',
		beforeSend: function(xhr) {
			xhr.setRequestHeader("X-AjaxPro-Method", "UpdateVariantSKU");
		},
		success: function(s) {
			var o = null;
			eval("o = " + s);
			if(o.value)
			{
				EnableAddToCartButton(true);
			}
		}
	});
}

//Enable/Disable the "Add To Shopping Cart" image.
function EnableAddToCartButton(val)
{
	if(val)
	{
		$("#AFLProductDetail1_imgbtnAddToCart").removeAttr("disabled");
	}
	else
	{
		$("#AFLProductDetail1_imgbtnAddToCart").attr("disabled","disabled");
	}
}

function CapitalizeFirstLetter(val) 
{
    newVal = '';
    val = val.replace(/_/g, " ");
    val = val.split(' ');
    for(var c=0; c < val.length; c++) 
    {
		newVal += val[c].substring(0,1).toUpperCase() + val[c].substring(1,val[c].length + ' ') + ' ';
    }
    //Remove the trailing space due to the for statement above.
    newVal = newVal.substring(0, newVal.length - 1);
    return newVal;
}

//This function is responsible for displaying the larger image via a popup div container.
function EnableEnlargeImage()
{
	$("#enlargeImage").hover(function()
	{	
		if(originalImageSrc == '')
		{
			originalImageSrc = $("#AFLProductDetail1_imgProduct").attr("src");
		}
		
		var largeImgUrl = $("#AFLProductDetail1_imgProduct").attr("src");
		largeImgUrl = largeImgUrl.replace("_m", "_wl");
		
		//If the image does not exist, show the original image in its place.
		var img = new Image();
		$(img).bind("load",function(){ShowImage(img, 'enlarge_image');});
		img.onerror = function()
		{     
			return img.src = originalImageSrc;
		}
		img.src = largeImgUrl;
		
		//$("#").attr("src", largeImgUrl);
		$("#enlarge_popup").animate({"height": "toggle", "opacity": "toggle"}, "slow").corner('cc:#D2BA93').corner('b cc:#FFFFFF');
		},
		function(){$("#enlarge_popup").fadeOut(1000);
	})
}
