
function pageLoad()
{
    ShowHideAdvanced("T" == $get(hidShowAdvId).value);
    
    $addHandler($get("saveSearch"), 'keypress', CheckKey);
}

function Page_OnLoginComplete()
{
    Reynolds.CL.Web.WebServices.VehicleFunctions.GetCarMatchCount(WSKey, GetCMCountSuccess, GetCMCountFailure, "");
}

// Process the results from getting the CarMatch count for this user.
function GetCMCountSuccess(result, context)
{
    // Are we at the max allowed CarMatch alerts?
    if(3 <= result)
    {
        $get(cbCarMatchId).disabled = true;
        $get(ddlEndDateId).disabled = true;
        showDIV("maxAlertsMsg");
        hideDIV("normAlertsMsg");
    }
    else
    {
        $get(cbCarMatchId).disabled = false;
        $get(ddlEndDateId).disabled = false;
        hideDIV("maxAlertsMsg");
        showDIV("normAlertsMsg");
    }
}

function GetCMCountFailure(err, context)
{}

function SliderOnClientLoaded(sender, args)  
{  
    sender.updateClientState();  
}  

function Sort(sortCol)
{
    if(!javaLoaded){return;}

    $get(hidNewSortId).value = sortCol;
    $get(btnDoSortId).click();
}

function fnNewSearch()
{
    if(!javaLoaded){return;}

    facPopupVar.Open();
    return false;
}

function ExpandedMouseOver(liObj, row)
{
    addCssClass($get("divHdr"+row, liObj), "expandedItemHeaderInfoHover");
}

function ExpandedMouseOut(liObj, row)
{
    removeCssClass($get("divHdr"+row, liObj), "expandedItemHeaderInfoHover");
}

function CollapsedMouseOver(obj, cellClass)
{
    addCssClass(obj, "collapsedRowHover");
    
    removeCssClass($get("imagePopUp", obj), "hide");
    
    if (cellClass == "cell1Premium1" || cellClass == "cell1Premium2"  || $get('hiddenIE7'))
    {
        cell1 = obj.childNodes[0];
        removeCssClass(cell1, cellClass);
        addCssClass(cell1, "cell1Hover");
    }
}

function CollapsedMouseOut(obj, cellClass)
{
    removeCssClass(obj, "collapsedRowHover");

    addCssClass($get("imagePopUp", obj), "hide");
    
    if (cellClass == "cell1Premium1" || cellClass == "cell1Premium2" || $get('hiddenIE7'))
    {
        cell1 = obj.childNodes[0];
        removeCssClass(cell1, "cell1Hover");
        addCssClass(cell1, cellClass);
    }
}

// Compare Vehicles button clicked.
function CompareVehicles()
{
    // Get the list of selected vehicles.
    var vehIds = "";
    var count = 0;
    var objChecks = document.getElementsByName("checkVeh");

    for(i=0; i<objChecks.length; i++)
    {
        if(objChecks[i].checked)
        {
            vehIds += objChecks[i].id.substring(3) + "|";
            count++;
        }
    }
    vehIds = vehIds.substring(0, vehIds.lastIndexOf("|"));
    
    if(count < 2)
    {
        alertVar.OpenAlert("COMPARE", "Vehicles", "Please select at least two vehicles for side-by-side comparison using the check boxes to the left of each search result.", null);
    }
    else
    {
        // Get the scroll position to restore on return to results.
        $get("hidScrollY").value = CL_GetScrollY();
        
        // Manually do a cross-page post back. We do it manually so we can modify the URL
        // based on the selected vehicles.   
        WebForm_DoPostBackWithOptions(
            new WebForm_PostBackOptions(btnDetailViewId, 
            "", 
            false, 
            "", 
            strCompareUrl.replace("VIDSVAL", vehIds),
            false, 
            true)); // why true when the button code had false?
    }
    
    return false;
}

function checkVeh_OnClick(checkBox)
{
    // count how many vehicle are checked.
    var count = 0;
    var objChecks = document.getElementsByName("checkVeh");
    for(i=0; i<objChecks.length; i++)
    {
        if(objChecks[i].checked)
        {
            count++;
        }
    }
    
    if(count > 5)
    {
        checkBox.checked = false;
        alertVar.OpenAlert("COMPARE", "Vehicles", "At most 5 vehicles can be selected to compare side by side.", null);
    }
    
    return false;
}

function RestoreVehicleChecks(strIds)
{
    var ids = strIds.split("|");
    var chk;
    
    for(i=0; i<ids.length; i++)
    {
        // find the check box for the vehicle id.
        chk = $get("chk" + ids[i]);
        if(null != chk)
        {
            chk.checked = true;
        }
    }
}

function VehicleOnClick(vehUrl)
{
    // Get the list of vehicles to pass to the detail page. Used for Next/Prev processing.
    var vehIds = "";
    var objChecks = document.getElementsByName("checkVeh");

    for(i=0; i<objChecks.length; i++)
    {
        vehIds += objChecks[i].id.substring(3) + "|";
    }
    $get(hidVehIdsId).value = vehIds.substring(0, vehIds.lastIndexOf("|"));
    
    // Get the scroll position to restore on return to results.
    $get("hidScrollY").value = CL_GetScrollY();
    
    // Manually do a cross-page post back. We do it manually so we can modify the URL
    // based on the selected vehicle.   
    // WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit)
    WebForm_DoPostBackWithOptions(
        new WebForm_PostBackOptions(btnDetailViewId, 
        "", 
        false, 
        "",
        vehUrl, 
        false, 
        true)); // why true when the button code had false?

    return false;
}

function FeaturedOnClick(vehUrl)
{   
    // Get the scroll position to restore on return to results.
    $get("hidScrollY").value = CL_GetScrollY();
    
    // Manually do a cross-page post back. We do it manually so we can modify the URL
    // based on the selected featured vehicle.   
    WebForm_DoPostBackWithOptions(
        new WebForm_PostBackOptions(btnDetailViewId, 
        "", 
        false, 
        "", 
        vehUrl, 
        false, 
        true)); // why true when the button code had false?
        
    return false;
}

function fnSaveVehicle(dlrId, vehId)
{
    try
    {
        SaveVehicleVar.Save(dlrId, vehId);
    }
    catch(err)
    {}
}
    
function saveSearch(sString)
{
   var el = $get('txtSaveSearch');
   var sName = el.value;
   if (sName == null || sName =='')
   {
        el.style.backgroundColor = '#FF9E00';
   }
   else
   {
        el.style.backgroundColor = 'white';
        el.value = "";
        alertClose();

        ProgressVar.Open();

        Reynolds.CL.Web.WebServices.VehicleFunctions.SaveSearch(
                                        sName, 
                                        sString, 
                                        $get(hidSearchXmlId).value, 
                                        $get(cbCarMatchId).checked, 
                                        $get(ddlEndDateId).value, 
                                        WSKey, 
                                        onComplete, onError, 'search');
   }
   
}

function CheckKey(evt)
{
    // evt is a Sys.UI.DomEvent object
 
    if (mapKeyToAction(evt))
    { 
        saveSearch(strSearchParms);
        setFixValidation();
        return false;
    }
}


function onComplete(result, response, context) 
{ 
    // Are we at the max allowed CarMatch alerts?
    if(3 <= result)
    {
        $get(cbCarMatchId).disabled = true;
        $get(ddlEndDateId).disabled = true;
        showDIV("maxAlertsMsg");
        hideDIV("normAlertsMsg");
    }
    ProgressVar.SuccessfulComplete('Search Saved Successfully.', 1000);
} 

function onError(err) 
{
    ProgressVar.FailureComplete('Error saving Search. Please try again.', 1000);

} 

function verifySaveSearch()
{
    hideDropDownVarList();
    
    if (isLoggedInVar == 'Y')
    {
        showDIV('saveSearch');
        setFocus($get('txtSaveSearch'));
    }
    else
    {
       showDIV('cantSaveSearch');
    }
    showDIV('alertBackground');
}

function alertClose()
{
   hideDIV('alertBackground');
   hideDIV('saveSearch');   
   hideDIV('cantSaveSearch');
   
   showDropDownVarList();
}

function directToLogin()
{
  alertClose();
  showLoginPopup('block');
}

function onBeginRequest(sender, args)   
{
    var callbackElement = args.get_postBackElement();
    var callbackname = callbackElement.id;
    var controlArray = progressVarList.split(',');;
  
    for (i=0; i<controlArray.length; i++)
    {                 
        if (callbackname == controlArray[i])
        {
            fnShowSearchingProgress();
            break;
        }
    } 

}   
     
function getSliderValue(sender, args, slideType)
{
    var val;
    if (sender.get_isSelectionRangeEnabled())
    {
       if (slideType == 'dollars')
       {
        var val1 = addCommas(sender.get_selectionStart());
        var val2 = addCommas(sender.get_selectionEnd());
        val = '$' + val1 + ' - $' + val2;
       }
       else
       {
        val = sender.get_selectionStart() + ' - ' + sender.get_selectionEnd();
       }
    }
    else
    {
        if (slideType == 'miles')
        {
            val = addCommas(sender.get_value());
        }
        else
        {
            val = sender.get_value();
        }
    }
    return val;
} 

function addCommas(nStr)
{
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2;
}

function toolTipVis(sender, tooltip)
{
    if (!tooltip.isVisible())
    {
        var activeHandle = sender.get_activeHandle();  
        if(!activeHandle) return;      
               
        tooltip.set_targetControl(activeHandle);
        tooltip.show();                
    }
    else
    {
        tooltip.updateLocation();
    }
}
     
function clientSlide(sender, args)
{
    var tooltip = $find(sliderToolTipVar);
    var val = getSliderValue(sender, args, 'normal');
    toolTipVis(sender, tooltip);

    tooltip.set_text(val);
}

function clientSlideMiles(sender, args)
{
    var tooltip = $find(sliderToolTipVar);
    var val = getSliderValue(sender, args, 'miles');
    toolTipVis(sender, tooltip);

    tooltip.set_text(val);
}

function clientSlideDollars(sender, args)
{
    var tooltip = $find(sliderToolTipVar);
    var val = getSliderValue(sender, args, 'dollars');
    toolTipVis(sender, tooltip);

    tooltip.set_text(val);
}
            
function clientSlideStart(sender, args)
{
    var tooltip = $find(sliderToolTipVar);
    tooltip.hide();  
}  

// ***** Start Featured Vehicles loading functions.

// We save the featured vehicles HTML so we don't need to re-query
// for it on every partial page refresh.
var featuredHTML;
function LoadFeatured()
{
    featuredHTML = "";
    Reynolds.CL.Web.WebServices.VehicleFunctions.GetFeaturedVehicles($get(hidSearchXmlId).value, WSKey, 
                                                        LoadFeaturedSuccess, LoadFeaturedFailure, "");
}

function LoadFeaturedSuccess(result, eventArgs)
{
    featuredHTML = result;
    LoadFeaturedHTML(featuredHTML);
} 

function LoadFeaturedFailure(err)
{
    featuredHTML = "";
    hideDIV("featuredListingsBlock");
}

function LoadFeaturedHTML()
{
    if(0 < featuredHTML.length)
    {
        var y = CL_GetScrollY();
        $get("divFeaturedContent").innerHTML = featuredHTML;

        showDIV("featuredListingsBlock");
        fixIEHeight();

        if(0 != y)
        {
            CL_ScrollTo(0, y);
        }
    }
    else
    {
        hideDIV("featuredListingsBlock");
    }
}
// ***** End Featured Vehicles functions.


function ToggleFilters()
{
    ShowHideAdvanced(Sys.UI.DomElement.containsCssClass($get("divAdvFilters"), "hide"))
}

function ShowHideAdvanced(show)
{
    if(show)
    {
        addCssClass($get("imgAdvPlus"), "hide");
        removeCssClass($get("imgAdvMinus"), "hide");
        removeCssClass($get("divAdvFilters"), "hide");
        $get(hidShowAdvId).value = "T";
    }
    else
    {
        addCssClass($get("imgAdvMinus"), "hide");
        removeCssClass($get("imgAdvPlus"), "hide");
        addCssClass($get("divAdvFilters"), "hide");
        $get(hidShowAdvId).value = "F";
    }
    fixIEHeight();
}

// ***** Start paging functions.
function GotoPage(page)
{
    // Go to the top of the browser page. Then process the event which will
    // do a partial page refresh to the selected results page.
    CL_ScrollTo(0,0);
    $get(hidGotoPageId).value = page;
    $get(btnUpdateId).click();
}

//Featured Vehicle mouse over and out
function featureMouseOver(el)
{
    addCssClass($get(el), 'underline');
}

function featureMouseOut(el)
{
    removeCssClass($get(el), 'underline');
}