var vehicleHash = new Object();
var errorMessageName = 'mydiv';

function check(e)
{
    var target;
    if (!e && window.event)
    {
        target = window.event.srcElement;
    }
    else
    {
        target = e.target;
    }
    var obj = document.getElementById(errorMessageName);
    if (obj)
    {
        if (checkParent(target) && obj.parentNode)
        {
            obj.parentNode.removeChild(obj);
        }
    }
}
function checkParent(t)
{
    while (t.parentNode)
    {
        if (t == document.getElementById(errorMessageName))
        {
            return false;
        }
        t = t.parentNode;
    }
    return true;
}

function Save()
{
    var encodedString = '';
    for (var vehicleKey in vehicleHash)
    {
        var vehicle = vehicleHash[vehicleKey];
        if (vehicle)
        {
            encodedString += (vehicleKey + '|' + vehicle.ImageUrl + '|' + vehicle.Title + '|' + vehicle.Year + '|' + vehicle.Make + '|' + vehicle.Model + '|' + vehicle.Trim + '|' + vehicle.TrimId + '|' + vehicle.MakeNormalized + '|' + vehicle.ModelNormalized + '|' + vehicle.TrimId + '|' + vehicle.Price + '|' + vehicle.Url + '|');
        }
    }

    Set_Cookie(cookieName, encodedString, 30, '/', host, false);
}

function Load()
{
    //Need to reset everything in case the hits the back button, we dont want to add the listings if they already exist
    vehicleHash = new Object();
    itemCount = 0;
    ph.innerHTML = '';

    var results = $get('results');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox')
            {
                checkboxes[i].checked = false;
            }
        }
    }

    results = $get('results1');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox')
            {
                checkboxes[i].checked = false;
            }
        }
    }

    results = $get('results2');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox')
            {
                checkboxes[i].checked = false;
            }
        }
    }

    var cookie = Get_Cookie(cookieName);
    if (cookie != null && cookie != '' && cookie != 'null')
    {
        var encodedString = cookie.split('|');
        var vehicle;
        for (var i = 0; i < encodedString.length; i++)
        {
            if (i % numProperties == 0 && encodedString[i] != '')
            {
                vehicle = new Object();
                vehicle.Id = encodedString[i];
            }
            else if (i % numProperties == 1)
            {
                vehicle.ImageUrl = encodedString[i];
            }
            else if (i % numProperties == 2)
            {
                vehicle.Title = encodedString[i];
            }
            else if (i % numProperties == 3)
            {
                vehicle.Year = encodedString[i];
            }
            else if (i % numProperties == 4)
            {
                vehicle.Make = encodedString[i];
            }
            else if (i % numProperties == 5)
            {
                vehicle.Model = encodedString[i];
            }
            else if (i % numProperties == 6)
            {
                vehicle.Trim = encodedString[i];
            }
            else if (i % numProperties == 7)
            {
                vehicle.TrimId = encodedString[i];
            }
            else if (i % numProperties == 8)
            {
                vehicle.MakeNormalized = encodedString[i];
            }
            else if (i % numProperties == 9)
            {
                vehicle.ModelNormalized = encodedString[i];
            }
            else if (i % numProperties == 10)
            {
                vehicle.TrimNormalized = encodedString[i];
            }
            else if (i % numProperties == 11)
            {
                vehicle.Price = encodedString[i];
            }
            else if (i % numProperties == 12)
            {
                vehicle.Url = encodedString[i];
                LoadCompareVehicle(vehicle);
            }
        }
    }
}

function LoadHtml(vehicleKey, vehicle)
{
    sObjectIdThumbnail = sObjectIdThumbnail.replace("[n]", itemCount + 1);
    sObjectIdYMMLink = sObjectIdYMMLink.replace("[n]", itemCount + 1);
    sObjectIdRemoveLink = sObjectIdRemoveLink.replace("[n]", itemCount + 1);

    var vehicleHtml = '';
    vehicleHtml += '<div id="' + vehicleKey + 'Container">';
    vehicleHtml += '	<div style="background-color:#F7F7F7; border:1px solid #C8C8C8; float:left; margin-right:8px; padding:8px; width:244px;">';
    vehicleHtml += '		<a onclick="' + sObjectIdThumbnail + '" href="' + vehicle.Url + '"><img src="' + vehicle.ImageUrl + '" alt="" onerror="this.src=\'' + imageUrlError + '\';" style="border:1px solid #2567BD; float:left; margin-right:10px; width:50px;" /></a>';
    vehicleHtml += '		<div style="float:left; width:110px;">';
    vehicleHtml += '<a onclick="' + sObjectIdYMMLink + '" href="' + vehicle.Url + '" class="clr1 no_u">' + vehicle.Title + '</a>';
    vehicleHtml += '<br />';
    vehicleHtml += '<b>' + vehicle.Price + '</b>';
    vehicleHtml += '		</div>';
    vehicleHtml += '		<div style="float:right; padding-top:25px;">';
    vehicleHtml += '			<a onclick="' + sObjectIdRemoveLink + 'ClearCompareVehicle(\'' + vehicleKey + '\')" style="cursor:pointer;" class="' + cssClassRemoveLink + '"><img src="' + imageUrlClose + '" alt="Remove Vehicle" style="border:0px; vertical-align:middle;" /> Remove</a>';
    vehicleHtml += '		</div>';
    vehicleHtml += '		<span style="clear:both;"></span>';
    vehicleHtml += '	</div>';
    vehicleHtml += '</div>';

    ph.innerHTML += vehicleHtml;
}

function SetupVehicle(Id, ImageUrl, Year, Make, Model, Trim, TrimId, MakeNormalized, ModelNormalized, TrimNormalized, Price, Url)
{
    var errorMessage = $get(errorMessageName);
    if (errorMessage)
    {
        if (errorMessage.parentNode)
        {
            errorMessage.parentNode.removeChild(errorMessage);
        }
    }

    var cbox = $get(Id);
    if (cbox)
    {
        var compareCell = $get(cbox.id.replace('cbox', 'compareCell'));
        if (!cbox.checked)
        {
            ClearCompareVehicle(Id);
        }
        else if (itemCount < 3)
        {
            var vehicle = new Object();
            vehicle.Id = Id;
            vehicle.ImageUrl = ImageUrl;
            vehicle.Year = Year;
            vehicle.Make = Make;
            vehicle.Model = Model;
            vehicle.Trim = Trim;
            vehicle.TrimId = TrimId;
            vehicle.MakeNormalized = MakeNormalized;
            vehicle.ModelNormalized = ModelNormalized;
            vehicle.TrimNormalized = TrimNormalized;
            vehicle.Title = Year + " " + Make + " " + Model + " " + Trim;
            vehicle.Price = Price;
            vehicle.Url = Url;
            LoadCompareVehicle(vehicle);
        }
        else
        {
            compareCell.innerHTML += '<div id="' + errorMessageName + '" style="background-color:#CDFFFE; border:1px solid #000; padding:5px; position:absolute; text-align:left; width:210px;">Only 3 vehicles can be compared at one time.</div>';
            $get(Id).checked = false;
            document.onmousedown = check;
        }
    }
}

function LoadCompareVehicle(Vehicle)
{
    vehicleHash[Vehicle.Id] = Vehicle;

    var bar = $get('bottomBar');
    if (bar.style.display == 'none')
    {
        bar.style.display = 'block';
    }

    var bottomBarData = $get('bottomBarData');
    if (bottomBarData.style.display == 'none')
    {
        bottomBarData.style.display = 'block';
    }

    LoadHtml(Vehicle.Id, Vehicle);

    var cbox = $get(Vehicle.Id);
    if (cbox)
    {
        cbox.checked = true;
        var compareCell = $get(cbox.id.replace('cbox', 'compareCell'));
        if (compareCell)
        {
            compareCell.className = cssClassCellHighlight;
        }
    }

    itemCount++;

    Save();

    if (itemCount == 1 && currentYear == "" && currentMake == "" && currentModel == "")
    {
        phCompareBtn.style.display = 'none';
    }
    else
    {
        phCompareBtn.style.display = 'block';
    }
}

function ClearCompareVehicle(Id)
{
    var hasChecks = false;
    var results = $get('results');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox' && checkboxes[i].id == Id)
            {
                checkboxes[i].checked = false;

                var compareCell = $get(checkboxes[i].id.replace('cbox', 'compareCell'));
                compareCell.className = cssClassCell;
            }
        }
    }

    results = $get('results1');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox' && checkboxes[i].id == Id)
            {
                checkboxes[i].checked = false;

                var compareCell = $get(checkboxes[i].id.replace('cbox', 'compareCell'));
                compareCell.className = cssClassCell;
            }
        }
    }

    results = $get('results2');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox' && checkboxes[i].id == Id)
            {
                checkboxes[i].checked = false;

                var compareCell = $get(checkboxes[i].id.replace('cbox', 'compareCell'));
                compareCell.className = cssClassCell;
            }
        }
    }

    var container = $get(Id + 'Container');
    if (container)
    {
        ph.removeChild(container);
    }

    vehicleHash[Id] = null;
    itemCount--;

    if (itemCount <= 0)
    {
        var bar = $get('bottomBar');
        bar.style.display = 'none';
        vehicleHash = new Object();
    }
    else if (itemCount == 1 && currentYear == "" && currentMake == "" && currentModel == "")
    {
        phCompareBtn.style.display = 'none';
    }
    else
    {
        phCompareBtn.style.display = 'block';
    }

    Save();
}

function ClearAllCompare()
{
    var bar = $get('bottomBar');
    bar.style.display = 'none';

    ph.innerHTML = '';

    var results = $get('results');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox')
            {
                checkboxes[i].checked = false;
                var compareCell = $get(checkboxes[i].id.replace('cbox', 'compareCell'));
                compareCell.className = cssClassCell;
            }
        }
    }

    results = $get('results1');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox')
            {
                checkboxes[i].checked = false;
                var compareCell = $get(checkboxes[i].id.replace('cbox', 'compareCell'));
                compareCell.className = cssClassCell;
            }
        }
    }

    results = $get('results2');
    if (results)
    {
        var checkboxes = results.getElementsByTagName('input');
        for (var i = 0; i < checkboxes.length; i++)
        {
            if (checkboxes[i].type == 'checkbox')
            {
                checkboxes[i].checked = false;
                var compareCell = $get(checkboxes[i].id.replace('cbox', 'compareCell'));
                compareCell.className = cssClassCell;
            }
        }
    }

    vehicleHash = new Object();

    itemCount = 0;

    Save();
}

function GetCompareUrl() {

    var index = 0;
    var url = navigateUrl;

    if (currentYear != "" && currentMake != "" && currentModel != "")
    {
        url = url.replace("{0}", currentYear);
        url = url.replace("{1}", currentMakeNormalized);
        url = url.replace("{2}", currentModelNormalized);

        url += "&Vehicle" + index + ".Year=" + currentYear;
        url += "&Vehicle" + index + ".Make=" + currentMake;
        url += "&Vehicle" + index + ".Model=" + fnFormatQS(currentModel);
        url += "&Vehicle" + index + ".Trim=";
        index++;
    }

    for (var vehicleKey in vehicleHash)
    {
        var vehicle = vehicleHash[vehicleKey];
        if (vehicle)
        {
            if (index == 0)
            {
                url = url.replace("{0}", vehicle.Year);
                url = url.replace("{1}", vehicle.MakeNormalized);
                url = url.replace("{2}", vehicle.ModelNormalized);
                url = url.replace("{3}", vehicle.TrimNormalized);
                url = url.replace("{4}", vehicle.TrimId);
            }

            url += "&Vehicle" + index + ".Year=" + vehicle.Year;
            url += "&Vehicle" + index + ".Make=" + vehicle.Make;
            url += "&Vehicle" + index + ".Model=" + fnFormatQS(vehicle.Model);
            url += "&Vehicle" + index + ".Trim=" + vehicle.Trim;
            index++;
        }
    }
    
    return url
}

function fnFormatQS(inString) {

    return inString.replace(/&/,'%26');
}
