// Navigate to the research detail page.
function NavToDetail()
{
    // Make sure the page passes validation.
    if(ValidatePage())
    {
        LF = new LinkFactory();
        LF._path = path;
        LF._qstring = qstring;
    
        LF.ReplaceToken("xYEARx", $get(ddlYearId).value);
        LF.ReplaceToken("xMAKEIDx", $get(ddlMakeId).value);
        LF.ReplaceToken("xMAKEx", $get(ddlMakeId).options[$get(ddlMakeId).selectedIndex].text);
        LF.ReplaceToken("xMODELx", $get(ddlModelId).value);
        LF.ReplaceToken("xTRIMx", $get(ddlTrimId).options[$get(ddlTrimId).selectedIndex].text);

        ids = $get(ddlTrimId).value.split(":");
        LF.ReplaceToken("xSIDx", ids[0]);
        LF.ReplaceToken("xRDWSIDx", ids[1]);
        
        navigateTo(LF.FinalizeUrl());
    }
}

// Do manual page validation.
function ValidatePage()
{
    retValue = true;
    
    // Check all of the drop downs. When they have data, the first entry is not a valid selection.
    
    if($get(ddlTrimId).selectedIndex <= 0)
    {
        removeCssClass($get("reqTrim"), "invis");
        $get(ddlTrimId).focus();
        retValue = false;
    }
    if($get(ddlModelId).selectedIndex <= 0)
    {
        removeCssClass($get("reqModel"), "invis");
        $get(ddlModelId).focus();
        retValue = false;
    }
    if($get(ddlYearId).selectedIndex <= 0)
    {
        removeCssClass($get("reqYear"), "invis");
        $get(ddlYearId).focus();
        retValue = false;
    }
    if($get(ddlMakeId).selectedIndex <= 0)
    {
        removeCssClass($get("reqMake"), "invis");
        $get(ddlMakeId).focus();
        retValue = false;
    }
    
    return retValue;
}

function adjustResearchHeight() //makes the right and left sides equal height on the research page
{
    if ($get('researchCars') && $get('findDealerToolsFix') && $get('researchPopular') && $get('researchArticlesTop'))
    {
        scrollReset = 'no';
        if ($get('dealerList') && $get('scrollbar') && $get('outerDiv') && $get('track') && $get('findDealerListLeft') && $get('findDealerListRight'))
        {
            scrollReset = 'yes';
            sc1 = $get('dealerList');
            sc2 = $get('scrollbar');
            sc3 = $get('outerDiv');
            sc4 = $get('track');
            sc5 = $get('findDealerListLeft');
            sc6 = $get('findDealerListRight');
            
            sc1.style.height="350px";
            sc2.style.height="350px";
            sc3.style.height="350px";
            sc4.style.height="320px";
            sc5.style.height="350px";
            sc6.style.height="350px";
        }
        el0 = $get('researchCars');
        el1 = $get('researchPopular');
        el3 = $get('researchArticlesTop');
        el2 = $get('findDealerToolsFix');
        if($get('hiddenIE6'))
        {
            el0.style.height="auto";
            el1.style.height="auto";
            el2.style.height="auto";
            el3.style.height=177 + "px";
        }
        el0.style.minHeight="1px";
        el1.style.minHeight="1px";
        el2.style.minHeight="1px";
        el3.style.minHeight=177 + "px";
        leftH = el1.offsetHeight + el0.offsetHeight + el3.offsetHeight + 12;
        rightH = el2.offsetHeight;
        rightH = rightH + 11;
        if ($get('dealerList').className == 'show')
        {
            if (leftH > rightH)
            {
                if (scrollReset == 'yes')
                {
                    myDiff = leftH - rightH;
                    sc1.style.height=myDiff + 350 + "px";
                    sc2.style.height=myDiff + 350 + "px";
                    sc3.style.height=myDiff + 350 + "px";
                    sc4.style.height=myDiff + 320 + "px";
                    sc5.style.height=myDiff + 350 + "px";
                    sc6.style.height=myDiff + 350 + "px";
                    
                    if (typeof loadInitScroll=="function")
                    {
                        loadInitScroll()
                    }
                }
                else
                {
                    if($get('hiddenIE6'))
                    {
                        el2.style.height=leftH - 11 + 'px';
                    }
                    else
                    {
                        el2.style.minHeight=leftH - 11 + 'px';
                    }
                }
            }
            if (rightH > leftH)
            {
                if($get('hiddenIE6'))
                {
                    el3.style.height=(rightH - el1.offsetHeight - el0.offsetHeight - 12) + 'px';
                }
                else
                {
                    el3.style.height=(rightH - el1.offsetHeight - el0.offsetHeight - 12) + 'px';
                }
            }
        }
    }
 }
 
function PopulateResearchModels()
{
    // Save the selected model before repopulating.
    selectedVal = $get(ddlModelId).value;

    // Mark the model drop down as "Loading". 
    SetDDLInnerHtml(ddlModelId, "<option>[Loading...]</option>");
    $get(ddlModelId).disabled = true;
    
    // Only fill the models if we have both year and make selected.
    if((0 < $get(ddlYearId).selectedIndex) && (0 < $get(ddlMakeId).selectedIndex))
    {
        Reynolds.CL.Web.WebServices.ResearchFunctions.GetModelDDList(
            $get(ddlYearId).value, $get(ddlMakeId).value, WSKey, 
            GetResearchModelsSuccess, 
            GetResearchModelsFailure, selectedVal);
    }
    else
    {
        SetDDLInnerHtml(ddlTrimId, "<option>Select Style</option>");
        $get(ddlTrimId).disabled = true;
        SetDDLInnerHtml(ddlModelId, "<option>Select Model</option>");
        $get(ddlModelId).disabled = true;
    }
} 

// Models drop down list successfully received from web service.
function GetResearchModelsSuccess(result, eventArgs)
{
    SetDDLInnerHtml(ddlModelId, result);
    $get(ddlModelId).disabled = false;

    // Restore the selected value if it exists.
    if(!fnSetDDLByValue(ddlModelId, eventArgs))
    {
        // We didn't find the model to reselect. We need to clear the Trim drop down.
        SetDDLInnerHtml(ddlTrimId, "<option>Select Style</option>");
        $get(ddlTrimId).disabled = true;
    }
} 

// Failure trying to get Models drop down list  from web service.
function GetResearchModelsFailure(err)
{
    alert(err.get_message());
    
    $get(ddlModelId).innerHTML = "";
    $get(ddlModelId).disabled = false;
}


function PopulateTrims()
{
    // Mark the model drop down as "Loading".    
    SetDDLInnerHtml(ddlTrimId, "<option>[Loading...]</option>");
    $get(ddlTrimId).disabled = true;
    
    // Only fill the Trims if we have both year and make selected.
    if((0 < $get(ddlYearId).selectedIndex) && (0 < $get(ddlMakeId).selectedIndex) && (0 < $get(ddlModelId).selectedIndex))
    {
        Reynolds.CL.Web.WebServices.ResearchFunctions.GetTrimDDList(
            $get(ddlYearId).value, $get(ddlMakeId).value, $get(ddlModelId).value, WSKey,
            GetTrimsSuccess, 
            GetTrimsFailure, "");
    }
    else
    {
        SetDDLInnerHtml(ddlTrimId, "<option>Select Style</option>");
        $get(ddlTrimId).disabled = true;
    }
} 

// Trims drop down list successfully received from web service.
function GetTrimsSuccess(result, eventArgs)
{
    SetDDLInnerHtml(ddlTrimId, result);
    $get(ddlTrimId).disabled = false;
} 

// Failure trying to get Trims drop down list  from web service.
function GetTrimsFailure(err)
{
    alert(err.get_message());
    
    $get(ddlTrimId).innerHTML = "";
    $get(ddlTrimId).disabled = false;
}
