﻿/// <reference name="MicrosoftAjax.js"/>

function addToCartControl_Click(productsGroupIndicatorArray)
{
	if (!isGroupSelected())
	{
		return false;
	}
	else
	{
	    addToCartHelper(productsGroupIndicatorArray);
	}
	return true;
}

function isGroupSelected()
{
    //  validate that at least one checkbox is checked
    var divCollection = document.getElementsByTagName("input");

    for (var i = 0; i < divCollection.length; i++) 
    {
        if(divCollection[i].getAttribute("type") == "checkbox") 
        {
            if (divCollection[i].checked)
            {
				return true;
            }
        } 
    }
	alert ("Please select an item before adding to cart.");
	return false;
}

function addToCartHelper(productsGroupIndicatorArray)
{
    //  get selected groups and create selectedVariant hidden field
	var errorMsg = "";
	var temp = "";
	var selectedVariant = $get("selectedVariant");
	selectedVariant.value = "";
	var needSeparator = false;

	for(var j = 0; j < productsGroupIndicatorArray.length; j++)
	{
		var groupInd = productsGroupIndicatorArray[j];
		var groupCheckbox = $get("checkbox" + groupInd);
				
		if(groupCheckbox.checked)
		{
		    temp = groupCheckbox.value;
		    if (needSeparator == true)
            {
                selectedVariant.setAttribute('value', selectedVariant.value + ',' + temp);
            }
            else
            {
                selectedVariant.setAttribute('value', temp);
                needSeparator = true;
            }
		}
	}
	addToCartButtonHidden.click();
}

function Checkbox_Click(groupID, groupIndicator, productID)
{
    var firstDropDown = $get("firstDropDown" + groupIndicator);
    var checkboxClicked = $get("checkbox" + groupIndicator);
    
    if(checkboxClicked.checked == false)
    {
        if(typeof(firstDropDown) != 'undefined' && firstDropDown != null)
        {
            if (firstDropDown.length == 2)
		    {
			    firstDropDown.selectedIndex = 1;
			    firstDropDown.value = firstDropDown.options[1].value;
			    clearSecondDropDown(groupIndicator);
			    updateSecondDropDown(groupID, groupIndicator, productID)
		    }
		    else
		    {
			    firstDropDown.selectedIndex = 0;
			    clearSecondDropDown(groupIndicator);
		    }
        }
	}
}

function SetSelectedVariantForGroup(groupIndicator, variantID)
{
    var checkboxForGroup = $get("checkbox" + groupIndicator);
    var secondDropDownForGroup = $get("secondDropDown" + groupIndicator);
    var firstDropDownForGroup = $get("firstDropDown" + groupIndicator);
    var ProductID = $get("ProductID" + groupIndicator);
    var groupDropDownCount = getGroupDropDownCount(groupIndicator);

    if (checkboxForGroup != null)
    {
		if (variantID == 0)
		{
			checkboxForGroup.setAttribute('value', '');
		}
		else
		{
		    if(groupDropDownCount == 2)
		    {
		        // variant|vehicleID|
		        checkboxForGroup.setAttribute('value', secondDropDownForGroup.value + '|' + firstDropDownForGroup.value + '|');
		    }
		    else if(groupDropDownCount == 1)
		    {
		        var vehicleIDHidden;

                // if first dropdown is submodel then use dropdown for vehicle id
		        if (getFirstDropDownAttributeType(groupIndicator) == "SubModel")
                {
                    vehicleIDHidden = firstDropDownForGroup;
                }
                else
                {
                    vehicleIDHidden = $get("vehicle_id_" + variantID);// use hidden field 
                }
		        
		        if (typeof(vehicleIDHidden) != 'undefined' && vehicleIDHidden != null && vehicleIDHidden.value != null && vehicleIDHidden.value != "" && vehicleIDHidden.value != "0")
		        {
		            // variant|vehicleID|
		            checkboxForGroup.setAttribute('value', variantID + '|' + vehicleIDHidden.value + '|');
		        }
		        else
		        {
		            // variant|
		            checkboxForGroup.setAttribute('value', variantID + '|');
		        }
		    }
		    else 
		    {
		        var variantIDHidden = $get("variantID" + groupIndicator);
		        
                if (typeof(variantIDHidden) != 'undefined' && variantIDHidden != null)
                {
                    // variant|
                    checkboxForGroup.setAttribute('value', variantIDHidden.value + '|');
                }                
		    }			
        }
    }
}

function displayVariantPopup(groupNumber, largeImageID, productID)
{
	if(groupNumber != "" && largeImageID != "" && largeImageID != "0")
	{
	    var WEBSITE_URL = $get("WEBSITE_URL").value;    
		window.open(WEBSITE_URL + "/GenericPages/ProductImage.aspx?IsVariantMedia=1&GroupID=" + groupNumber + "&ImageID=" + largeImageID + "&ProductID=" + productID, "large_image");
	}
}

function ChangeProductImage(imageUrl, imagePath, largeImageMediaID)
{
	if(imagePath != "")
	{
		var productImage = document.getElementById("productImageFileName");
		productImage.src = imageUrl + imagePath;
	    
		var largeImageID = document.getElementById("LargeImageID");
		largeImageID.value = largeImageMediaID;
	}
}  

function SchemaImageMouseout(groupIndicator, imageUrl)
{
    var groupSchemaImage = document.getElementById("VariantGroupMainImage" + groupIndicator);
    groupSchemaImage.src = document.getElementById("VariantGroupMainImageMouseout").value;
    
    var groupSchemaImageDesc = document.getElementById("VariantGroupMainImageDesc" + groupIndicator);
    groupSchemaImageDesc.innerHTML = document.getElementById("VariantGroupMainImageDescMouseout").value;
}

function SchemaImageMouseover(groupIndicator, imageUrl, imageDesc)
{
    var groupSchemaImage = document.getElementById("VariantGroupMainImage" + groupIndicator);
    document.getElementById("VariantGroupMainImageMouseout").value = groupSchemaImage.src;

    var groupSchemaImageDesc = document.getElementById("VariantGroupMainImageDesc" + groupIndicator);
    document.getElementById("VariantGroupMainImageDescMouseout").value = groupSchemaImageDesc.getAttribute("innerHTML");

    groupSchemaImageDesc.innerHTML = imageDesc;
    groupSchemaImage.src = imageUrl;
} 

function updateContent(variantID, groupIndicator)
{
    var firstDropDownControl = $get("firstDropDown" + groupIndicator);
    
    if (typeof(firstDropDownControl) != 'undefined' && firstDropDownControl != null)
    {
        var vehicleID = 0;
        var groupDropDownCount = getGroupDropDownCount(groupIndicator);
    	   	 
	    if(groupDropDownCount == 1)
	    {
	        // if first dropdown is submodel then use dropdown for vehicle id
	        if (getFirstDropDownAttributeType(groupIndicator) == "SubModel")
	        {
	            vehicleID = firstDropDownControl.value;
	        }
	        else
	        {
	            // get the vehicle id from the hidden field
	            var vehicleIDControl = $get("vehicle_id_" + variantID);
    		    
		        if(typeof(vehicleIDControl) != 'undefined' && vehicleIDControl != null)
	            {
		            vehicleID = vehicleIDControl.value;
	            }
	        }
	    }
	    else
	    {
    	    vehicleID = firstDropDownControl.value;
	    }
        
        var variantGroupID = $get("GroupID" + groupIndicator).value;
        
        ProductLineWebService.GetContent(variantID, vehicleID, groupIndicator, variantGroupID, updateContentCallback, productLineProductAjaxError);
    }
}

function updateContentCallback(result)
{       
    if(result != null)
    {
	    document.getElementById("contentSpan" + result.GroupIndicator).innerHTML = result.Content; 
		var secondDropDown = window.document.getElementById("secondDropDown" + result.GroupIndicator);
		var variantID = secondDropDown.value;
		var mediaFile = "";
		
		if(variantID != "")
		{
			if(result.MediaFilename != null && result.MediaFilename != '')
			{
				document.getElementById("VariantGroupMainImage" + result.GroupIndicator).src = result.MediaFilename;
			}        

			var groupSchemaImageDesc = document.getElementById("VariantGroupMainImageDesc" + result.GroupIndicator);
			groupSchemaImageDesc.innerHTML = result.MediaDesc;
        }
    }
}

function updateSecondDropDown(variantGroupID, groupIndicator, productID)
{
    var firstDropDown = $get("firstDropDown" + groupIndicator);
    var groupDropDownCount = getGroupDropDownCount(groupIndicator);

    if(typeof(firstDropDown) != 'undefined' && firstDropDown != null && groupDropDownCount == 2)
    {
        var vehicleID = firstDropDown.value;
        
        if (vehicleID != "") 
        {          
            var returnAttributeHiddenValue = document.getElementById("returnAttributeHidden" + groupIndicator).value;
                 
		    ProductLineWebService.GetSecondOptions(productID, vehicleID, variantGroupID, groupIndicator, returnAttributeHiddenValue, getSecondOptionCallback, productLineProductAjaxError);
        } 
        else 
        {
	        clearSecondDropDown(groupIndicator);
        }
    }
}

function updateSecondDropDownWithPreset(variantGroupID, groupIndicator, productID)
{
    var firstDropDown = $get("firstDropDown" + groupIndicator);
    var groupDropDownCount = getGroupDropDownCount(groupIndicator);

    if(typeof(firstDropDown) != 'undefined' && firstDropDown != null && groupDropDownCount == 2)
    {
        var vehicleID = firstDropDown.value;
        
        if (vehicleID != "") 
        {               
            var returnAttributeHiddenValue = document.getElementById("returnAttributeHidden" + groupIndicator).value;
            
	        ProductLineWebService.GetSecondOptions(productID, vehicleID, variantGroupID, groupIndicator, returnAttributeHiddenValue, getSecondOptionCallbackWithPreset, productLineProductAjaxError);
        } 
        else 
        {
	        clearSecondDropDown(groupIndicator);
        }
    }
}

function getSecondOptionCallbackWithPreset(result)
{
    getSecondOptionCallback(result);
    
    if(result != null)
    {
        var groupIndicator = result[0].GroupIndicator;
        var variantGroupID = result[0].VariantGroupID;
        var secondDropDown = window.document.getElementById("secondDropDown" + groupIndicator);
        
        if (secondDropDown.length == 2)
        {
            secondDropDown.selectedIndex = 1;
            secondDropDown.value = secondDropDown.options[1].value;
            setAvailabilityWithoutCheckbox(groupIndicator);
        }
    }    
}

function getSecondOptionCallback(result)
{       
    var secondAttrLabel = document.getElementById("secondAttributeLabel").value;      
    var ImagePath = document.getElementById("ImagePath").value;      
    
    if(result != null)
    {
        var groupIndicator = result[0].GroupIndicator;
        var variantGroupID = result[0].VariantGroupID;
        var s = new Array();

	    s[s.length] = "<select id=\"secondDropDown" + groupIndicator + "\"\" onchange=\"setAvailability(" + groupIndicator + ");\" >";
	    s[s.length] = "<option value=\"\">" + secondAttrLabel + "</option>";
	    for (var i=0; i < result.length; i++)
	    {    
			if(result[i].AttributeDesc != null)
			{
			    //  Display the price if it is not a map product (Minimum Advertised Price Policy)
			    if(typeof(isMapProduct) != 'undefined' && isMapProduct != null && !isMapProduct)
			    {
			        s[s.length] = "<option value=\"" + result[i].VariantID + "\">" + result[i].AttributeDesc + " - " + result[i].SalePrice + "</option>";
			    }
			    else
			    {
			        s[s.length] = "<option value=\"" + result[i].VariantID + "\">" + result[i].AttributeDesc + "</option>";
			    }
			}
        }
		s[s.length] = "</select>";
		
        for (var i=0; i < result.length; i++)
	    {    
			s[s.length] = "<input type=\"hidden\" id=\"shipdate_" + result[i].VariantID + "\" value=\"" + result[i].ShippingDate + "\" / >";
			s[s.length] = "<input type=\"hidden\" id=\"saleprice_" + result[i].VariantID + "\" value=\"" + result[i].SalePrice + "\" / >";
			s[s.length] = "<input type=\"hidden\" id=\"media_" + result[i].VariantID + "\" value=\"" + result[i].MediaID + "\" / >";
			if (result[i].MediaFilename == "")
			{
				s[s.length] = "<input type=\"hidden\" id=\"media_file_" + result[i].VariantID + "\" value=\"\" / >";
			}
			else
			{
				s[s.length] = "<input type=\"hidden\" id=\"media_file_" + result[i].VariantID + "\" value=\"" + ImagePath + result[i].MediaFilename + "\" / >";
			}
        }
	    document.getElementById("secondDropDownSpan" + groupIndicator).innerHTML = s.join(""); 
    
		var vehicleID = document.getElementById("firstDropDown" + groupIndicator).value;
		updateContent(0, groupIndicator);
    }
    
    if (window.document.getElementById("topOptionalBox") != null)
	{
	    fixIE7zIndexBug();
	}
}

function fixIE7zIndexBug()
{
	window.document.getElementById("topOptionalBox").style["display"] = "none";
	window.document.getElementById("topOptionalBox").style["display"] = "block";
}
		
function clearSecondDropDown(groupIndicator)
{
    var groupDropDownCount = getGroupDropDownCount(groupIndicator);
    if(groupDropDownCount == 2)
    {
        var secondAttributeLabel = window.document.getElementById("secondAttributeLabel").getAttribute("value");	

        var s = new Array();
        s[s.length] = "<select id=\"secondDropDown" + groupIndicator + "\" disabled>";
        s[s.length] = "<option value=\"\">" + secondAttributeLabel + "&nbsp</option>"; 
	    s[s.length] = "</select>";
        document.getElementById("secondDropDownSpan" + groupIndicator).innerHTML = s.join("");
    }
    setAvailability(groupIndicator);
}

function setAvailabilityWithoutCheckbox(groupIndicator)
{
    var variantID = $get("secondDropDown" + groupIndicator).value;
    var vehicleID = $get("firstDropDown" + groupIndicator).value;

	var idForHiddenFields = variantID;

	// if 1 dropdown and is submodel then use group id and vehicle id as name for hidden field
	var groupDropDownCount = getGroupDropDownCount(groupIndicator);
	if (groupDropDownCount == 1)
	{
	    if (getFirstDropDownAttributeType(groupIndicator) == "SubModel")
	    {
	        idForHiddenFields = groupIndicator + "_" + vehicleID;
	    }
	}

	var salePriceFromID = "saleprice_" + idForHiddenFields;
	var availabilityDate = $get("shipdate_" + idForHiddenFields).getAttribute("value");
	var salePrice = $get(salePriceFromID).getAttribute("value");
    
    updateContent(variantID, groupIndicator);
    SetSelectedVariantForGroup(groupIndicator, variantID);
    $get("checkbox" + groupIndicator).disabled = false;

	if (availabilityDate != "")
	{
	    var shipdate = $get("shippingDate" + groupIndicator);
        if (shipdate != null)
        {
	        shipdate.innerHTML = availabilityDate;
	    }
	}
	$get("variantGroupPrice" + groupIndicator).innerHTML = salePrice;

	if ($get("topOptionalBox") != null)
	{
	    fixIE7zIndexBug();
	}
}

function getGroupDropDownCount(groupIndicator)
{
    return $get("groupDropDownCount" + groupIndicator).value;
}

function getFirstDropDownAttributeType(groupIndicator)
{
    return $get("attributeTypeHidden" + groupIndicator).value;
}

function getIDForHiddenFields(groupIndicator, variantID, vehicleID)
{    
    var returnValue = "";
    var groupDropDownCount = getGroupDropDownCount(groupIndicator);

    if (groupDropDownCount == 1)
    {
         var firstDropDownType = getFirstDropDownAttributeType(groupIndicator);

         if (firstDropDownType == "SubModel")
         {
             returnValue = groupIndicator + "_" + vehicleID;
         }
         else
         {
             returnValue = variantID;
         }
    }
    else
    {
        returnValue = variantID;
    }
    return returnValue;
}

function setAvailability(groupIndicator)
{
    var secondDDFromID = "secondDropDown" + groupIndicator;
    var secondDropDown = $get(secondDDFromID);
    var firstDDFromID = "firstDropDown" + groupIndicator;
    var firstDropDown = $get(firstDDFromID);
    var checkbox = $get("checkbox" + groupIndicator);
	var variantID = secondDropDown.value;
	var vehicleID = firstDropDown.value;
	var idForHiddenFields = "";
	
	var groupDropDownCount = getGroupDropDownCount(groupIndicator);

	if (groupDropDownCount == 1)
	{
	    // variant_id will be in hidden field if 1 dropdown and dropdown is submodel
	    var firstDropDownAttributeType = getFirstDropDownAttributeType(groupIndicator);
	    if (firstDropDownAttributeType == "SubModel")
	    {
	        var variantIDHiddenField = $get("variant_id_" + groupIndicator + "_" + vehicleID);

	        if (typeof (variantIDHiddenField) != 'undefined' && variantIDHiddenField != null && variantIDHiddenField.value != "")
	        {
	            variantID = variantIDHiddenField.value;
	        }

	        idForHiddenFields = getIDForHiddenFields(groupIndicator, variantID, vehicleID);
	    }
	    else
	    {
	        // use value from first dropdown - variant_id will be in the first dropdown (if there is only one dropdown and not submodel dropdown)
	        variantID = vehicleID;
	        idForHiddenFields = variantID; 
	    }
	}
	else
	{
	    idForHiddenFields = variantID;
	}

	var salePriceFromID = "saleprice_" + idForHiddenFields;
	    
	if (variantID != "" && vehicleID != "")
	{
	    var availabilityDate = $get("shipdate_" + idForHiddenFields).value;
	    var salePrice = $get(salePriceFromID).value;
	  	    
        updateContent(variantID, groupIndicator);
        SetSelectedVariantForGroup(groupIndicator, variantID);
        checkbox.checked = true;
        checkbox.disabled = false;

        var largeImageObj = $get("large_media_" + idForHiddenFields);
    	var productID = $get("ProductID" + groupIndicator);
        
        var variantGroupMainImage = $get("VariantGroupMainImageDiv" + groupIndicator);

        if (typeof(largeImageObj) != 'undefined' && largeImageObj != null)
	    {
			var largeImageID = largeImageObj.value;
			if (typeof (variantGroupMainImage) != 'undefined' && variantGroupMainImage != null)
            {
                variantGroupMainImage.onclick = function() { displayVariantPopup('0', largeImageID, productID.value); };
		    }
		}		
	} 
	else
	{
		var availabilityDate = "<em>Select options to see availability.</em>";
	    var salePrice = $get("shippingPriceDefault" + groupIndicator).getAttribute("value");
		var groupSchemaImage = document.getElementById("VariantGroupMainImage" + groupIndicator);
        var groupSchemaImageDesc = document.getElementById("VariantGroupMainImageDesc" + groupIndicator);

        checkbox.checked = false;
        checkbox.disabled = true;
        $get("contentSpan" + groupIndicator).innerHTML = "";
        groupSchemaImage.src = $get("DefaultImageFilename" + groupIndicator).value;
        groupSchemaImageDesc.innerHTML = $get("DefaultImageDesc" + groupIndicator).value;
        SetSelectedVariantForGroup(groupIndicator, 0);
	}
	
	if (availabilityDate != "")
	{
	    var shipdate = $get("shippingDate" + groupIndicator);
        if (shipdate != null)
        {
	        shipdate.innerHTML = availabilityDate;
	    }
	}
	$get("variantGroupPrice" + groupIndicator).innerHTML = salePrice;
	
	if ($get("topOptionalBox") != null)
	{
	    fixIE7zIndexBug();
	}
}

function productLineProductAjaxError(error)
{
    alert("An error has occurred while trying to process your request. Please refresh the browser and try again.");
}

function ShowGroupCartImage(groupID)
{
    var cartImage = document.getElementById("addToCartVariantGroupImage" + groupID);
    
    if (typeof(cartImage) != 'undefined' && cartImage != null)
    {
	    cartImage.style["display"] = "block";
	}
}