﻿// new style inventory - with ajax calls

    // Yahoo widget section --
    var olay = new YAHOO.widget.Overlay("olay", { context:["divalign","tl","tl"],
									              visible:true,
									              width:"0px",
									              height:"0px" } );
									              
    var olayanim;
    var invanim;
    
    
    function inityahoo()
    {
        olay.render();

         
        var attributes1 = {
            height: { from: 180, to: 180 }
        };
        var anim1 = new YAHOO.util.Anim('InvSpecials', attributes1, .5, YAHOO.util.Easing.easeBoth);
        invanim = anim1;
       
        var dx = YAHOO.util.Dom.getX('divalign'); 
        var dy = YAHOO.util.Dom.getY('divalign');

        var attributes2 = {

            left: { from: dx, to: dx },
            top: { from: dy, to: dy },        
            width: { from: 0, to: 0 },
            height: { from: 0, to: 0 }            
        };
        var anim2 = new YAHOO.util.Anim('olay', attributes2, 1, YAHOO.util.Easing.easeOut);
        function animhide()
        {
            document.getElementById('InvSpecials').style.height = "20px";
            anim2.animate();
        }
        
        var attributes = {
            left: { from: dx, to: (dx - 400) },
            top: { from: (dy+50), to: dy },        
            width: { from: 0, to: 800 },
            height: { from: 0, to: 145 }

        };

        var anim = new YAHOO.util.Anim('olay', attributes, 1, YAHOO.util.Easing.easeOut);
        olayanim = anim;

        YAHOO.util.Event.on('showdata1', 'click', animbox);
        YAHOO.util.Event.on('showdata2', 'click', animbox);
        YAHOO.util.Event.on('showdata3', 'click', animbox);
        YAHOO.util.Event.on('showdata4', 'click', animbox);
        YAHOO.util.Event.on('showdata5', 'click', animbox);
        YAHOO.util.Event.on('showdata6', 'click', animbox);
        YAHOO.util.Event.on('showdata7', 'click', animhide);
																			  
    }
    
    function animbox() {
        invanim.animate();
        olayanim.animate();
    }   
    
    YAHOO.util.Event.addListener(window, "load", inityahoo);
    
// Yahoo widget section -- End --



var invobj = null;
var invpageobj = null;
var limit = 50;  // vehicles per page
var startrow = 1, endrow = limit;
var totalrec = 0, invfilter = 'All', invtype = 0, prevsel;
var invseltype = 'All', invselymm = 'All';
var pages = 1;
var sort = 12;   // Newest Date desc - (values: 2 - 13)
var prevsort = 12;
var filltxt;
var pgbothtml;
var firstsel=0, allsell=true;
var cr_pglimit = 10; // number of pages to show.
var cr_startpg = 0, cr_endpg = cr_pglimit;
var new_vehiclepage = 2;  // if new vehicles are shown in separate page. (0 = new, 1 = used, 2 = both)
var vehicletype = '%';  // vehicleType - default all
var vehicletypeExclude = '-1';  // vehicleType to Exclude - default exclude none


function getQuerystring(name) // get url query string
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return undefined;
  else
    return results[1];
}

function icomplete(arg,userContext,methodName)
{
if (methodName == "GetCustomer")
    setCustomer(arg);
else if (methodName == "SendMailAFriend")
    close(arg);
else if (methodName == "SendMailDealer")
    close(arg);            
else if (methodName == "GetInventoryObj")
    isetDetails(arg);
else if (methodName == "GetInventoryPaging")
    isetInvPage(arg);    
}

function itimeout(arg) 
{
if(arg != null)
    alert(arg._message);
else    
    alert("There was an error while processing your request. The Technical Support Team has been notified. Please try the request later.");
}

function ierror(arg)
{
if(arg != null)
    alert(arg._message);
else    
    alert("There was an error while processing your request. The Technical Support Team has been notified. Please try the request later.");
}    


function isetInvPage(arg)
{
    invpageobj = arg;
    ifillInventory(invpageobj);   
}

var feature;

function igetDetails(dlr_id)
{
    new_vehiclepage = getQuerystring('vstatus');
    if(new_vehiclepage === undefined){ new_vehiclepage = 2; }
    vehicletype = getQuerystring('vtype');
    if(vehicletype === undefined){ vehicletype = '%'; }
    vehicletypeExclude = getQuerystring('vtypeExclude');
    if(vehicletypeExclude === undefined){ vehicletypeExclude = '-1'; }
    
    if(invobj == null)
        ret0 = DealerWebsites.DealerWebService.GetInventoryObj(dlr_id, new_vehiclepage, vehicletype, vehicletypeExclude, icomplete, itimeout, ierror); 
}

function isetDetails(arg)
{
    invobj = arg;
    ifillSelects(0, invobj);   
}

function igetFeature(dlr_id, type) 
{
      feature = type;
      isetFeature(invobj, feature);  
}


function isetFeature(arg, feature)
{
    var inv_data = document.getElementById("Inv_Data");
    inv_data.innerHTML = "";
    var fill = '<table id="inv_tabdata" cellpadding="2" cellspacing="0" width="100%"><tbody><tr>';
    var tabcols = 5;
    var cols = 5;
    var rows = 1;
    var type;
    var i = j = k = 0, cnt = 0;
    
    //invobj = arg;
    if(arg){
    switch (feature){
    case 0: // makes
        var i = 0;
        for(i=0; i<arg.Makes.length; i++){
            makecnt =  arg.Makes[i].Count;
            if(i == tabcols){
                tabcols += cols;
                fill += "</tr><tr>";
                rows++;
            }    
            fill += "<td class='disptrans' ><a href=javascript:invpagefilter('" + escape(arg.Makes[i].Make) + "',1); style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>" + arg.Makes[i].Make + " (" + makecnt + ")</a></td>";
        }  
        invseltype = "Make";  
        break;
    case 1: // models
        var j = k = 0;
        tabcols = 5;
        cols = 5;
        var arr = new Array();
        var arrcnt = new Array(); 
        for(i=0; i<arg.Makes.length; i++){
            for(j=0;j<arg.Makes[i].Models.length;j++, k++){
                arr[k] = arg.Makes[i].Models[j].Model;
                arrcnt[k] = arg.Makes[i].Models[j].Model + " (" + arg.Makes[i].Models[j].Count + ")";
            }    
        }
        arr.sort();
        arrcnt.sort();
        for(i=0;i<arr.length;i++){
            if(i == tabcols){
                tabcols += cols;
                fill += "</tr><tr>";
                rows++;
            }    
            fill += "<td class='disptrans'><a href=javascript:invpagefilter('"+ escape(arr[i]) +"',2);  style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>" + arrcnt[i] + "</a></td>";
        }
        invseltype = "Model";  
        break;
    case 2: // price
        j = k = cnt = 0;
        tabcols = 5;
        cols = 5;
        var gap = 2500;
        for(i=0; i<arg.MinMax.PriceMax; i+=gap, j++, k = 1){
            if(j == tabcols){
                tabcols += cols ;
                fill += "</tr><tr>";
                rows++;
            } 
            if(i==0){
                cnt =  getinvCount(arg, ((1) + "||" + (gap)), 1)
                fill += "<td class='disptrans' style='color:#ffffff; border-right:1px solid; text-align:right;' >&nbsp;<a href=javascript:invpagefilter('"+ ((1) + "," + (gap)) +"',3);  style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>$" + formatNumC(1) + " - $" + formatNumC(gap) + " ("+ cnt +") " + "</a></td>";
            }else{
                cnt =  getinvCount(arg, ((i + k) + "||" + (i+gap)), 1)
                fill += "<td class='disptrans' style='color:#ffffff; border-right:1px solid; text-align:right;' >&nbsp;<a href=javascript:invpagefilter('"+ ((i + k) + "," + (i+gap)) +"',3);  style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>$" + formatNumC(i + k) + " - $" + formatNumC(i+gap) + " ("+ cnt +") " + "</a></td>";
            }
        }
        cnt =  getinvCount(arg, ((-1) + "||" + (0)), 1)
        fill += "<td class='disptrans' style='color:#ffffff; border-right:1px solid; text-align:right;' >&nbsp;<a href=javascript:invpagefilter('"+ ((-1) + "," + (0)) +"',3);  style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>No Price ("+ cnt +") " + "</a></td>";
        invseltype = "Price";      
        break;
    case 3: // mileage
        j = k = cnt = 0;
        tabcols = 6;
        cols = 6;
        var gap = 10000;
        for(i=0; i<arg.MinMax.MileageMax; i+=gap, j++, k = 1){
            if(j == tabcols){
                tabcols += cols;
                fill += "</tr><tr>";
                rows++;
            }    
            cnt =  getinvCount(arg, ((i + k) + "||" + (i+gap)), 2)
            fill += "<td class='disptrans' style='color:#ffffff; border-right:1px solid; text-align:right;' >&nbsp;<a href=javascript:invpagefilter('"+ ((i + k) + "-" + (i+gap)) +"',4); style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>" + formatNumInt(i + k) + " - " + formatNumInt(i+gap) + " ("+ cnt +") " + "</a></td>";
        }
        invseltype = "Mileage";      
        break;
    case 4: // colour
        tabcols = 12;
        cols = 12;
        cnt = 0;
        var gap = 10000;
        rows++;
        for(i=0; i<arg.MinMax.Colors.length; i++){
            if(i == tabcols){
                tabcols += cols ;
                fill += "</tr><tr>";
                rows++;
            } 
            cnt =  getinvCount(arg, escape(arg.MinMax.Colors[i].Color), 3)   
            fill += "<td class='disptrans' style='color:#ffffff;' >&nbsp;<a href=javascript:invpagefilter('" + escape(arg.MinMax.Colors[i].Color) + "',5); style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>" + arg.MinMax.Colors[i].Color + " ("+ cnt +") " + "</a></td>";
        }
        invseltype = "Color";      
        break;        
    case 5: // bodytype
        tabcols = 5;
        cols = 5;
        var gap = 10000;
        cnt = 0;
        for(i=0; i<arg.MinMax.BodyTypes.length; i++){
            if(i == tabcols){
                tabcols += cols ;
                fill += "</tr><tr>";
                rows++;
            }
            cnt =  getinvCount(arg, escape(arg.MinMax.BodyTypes[i].BodyType), 4)    
            fill += "<td class='disptrans' style='color:#ffffff;' >&nbsp;<a href=javascript:invpagefilter('" + escape(arg.MinMax.BodyTypes[i].BodyType) + "',6); style='color:#ffffff;' id='a_"+ i +"' onclick=set_select('a_"+ i +"')>" + arg.MinMax.BodyTypes[i].BodyType + " ("+ cnt +") " + "</a></td>";
        }
        invseltype = "Body Type";      
        break;                                
   }  // end case
   }  // end if
   

   fill += "</tr></tbody><table>";
   inv_data.innerHTML = fill;       
   filltxt = fill
   prevsel = "";
   invfilter = "All"; 
}



function ifillInventory(arg)
{
    if(arg){
        var i=j=k=0;
        
        var invdiv = document.getElementById("InvV2");
        var fill= '<table cellspacing="0" align="center" rules="all" border="1" id="DG_VehList" style="width:100%;border-collapse:collapse;"><tbody>';
        
        var price = "0.00", picheight = "75px", engines, cylinders, trans, excolor, interior, imagecount, stockno, miles, carfaxlink, vin, invdetails, title;
        var UnityMediaVideoDiv = ""; 
       
        for(i=0; i<arg.InvPageList.length; i++){
        
            (arg.InvPageList[i].ImagePath.indexOf('ChromeStockPhotos') > 0) ? picheight = "50px" : picheight = "75px";
                
            price = formatNumC(arg.InvPageList[i].SuggSalePrice);
            if(arg.InvPageList[i].SuggSalePrice > 0){
                //if(arg.InvPageList[i].SuggSalePrice == 0){ price = "0.00"; }
                if(arg.InvPageList[i].SuggSalePrice_Negotiable){
                    price += "/OBO" 
                }else{                    
                    price = ' - $' +  price;
                }
            }else{
                price = ' ';
            }
                        
            
            engines = (arg.InvPageList[i].EngineSize) ? arg.InvPageList[i].EngineSize.replace("Liter","L") : arg.InvPageList[i].EngineSize;   
            
            cylinders = (arg.InvPageList[i].CylindersDesc) ? arg.InvPageList[i].CylindersDesc : arg.InvPageList[i].Cylinders + " Cyl.";   
            trans = (arg.InvPageList[i].Transmission) ? ", " + arg.InvPageList[i].Transmission : arg.InvPageList[i].Transmission;   
            excolor = (arg.InvPageList[i].ExteriorColorFactory) ? '<br>Exterior Color: ' +  arg.InvPageList[i].ExteriorColorFactory : '<br>Exterior Color: ' + arg.InvPageList[i].ExteriorColor;
            interior = (arg.InvPageList[i].InteriorColor || arg.InvPageList[i].InteriorMaterial) ? '<br>Interior: ' +  arg.InvPageList[i].InteriorColor + ' ' + arg.InvPageList[i].InteriorMaterial : '<br>';   
            
            imagecount = arg.InvPageList[i].ImageCount;
            if(imagecount == 1)
                imagecount += ' Photo';
            else if(imagecount > 1)
                imagecount += ' Photos';
            else
                imagecount = '';
            
            stockno = (arg.InvPageList[i].StockNo)? '<br/>Stock#: ' + arg.InvPageList[i].StockNo : ' ';
            miles = (arg.InvPageList[i].Miles)? '<br/>Mileage: ' + formatNumInt(arg.InvPageList[i].Miles) : ' ';
            vin = arg.InvPageList[i].Vin;
            carfaxlink = (vin)? '<br><a href="' + document.getElementById('carfaxlink').innerHTML + '&vin=' + vin + '" target="_blank">'+ document.getElementById('carfaxpic').innerHTML + '</a>' : ' ';
            invdetails = (vin)? 'viewinventorydetails.aspx?inventoryid=' + arg.InvPageList[i].URLEncodedEncrInvID : '#';
            title = arg.InvPageList[i].Year + ' ' + arg.InvPageList[i].Make + ' ' + arg.InvPageList[i].Model + ' ' + arg.InvPageList[i].Trim;
            if(typeof UnityMediaVendorDealerID2 !== 'undefined' && UnityMediaVendorDealerID2 != ""){
                UnityMediaVideoDiv = '<div id="uwm_' + vin+ '" style="float:left; font-weight:bold; text-decoration:none; cursor:pointer; display:inline;">&nbsp;--&nbsp;Click here to watch a video of this vehicle</div>';
            }    
                     
            fill += '<tr class="InventoryVehList_RowA"><td class="DG_VehList_A"><table align="center" class="ImgTable-Thumb" width="100%"><tr><td><a href="'+ invdetails +'"><img title="' + title + '" src="' + arg.InvPageList[i].ImagePath + '" style="height:'+ picheight +';width:100px;border-width:0px;" /></a></td></tr></table></td>'; 
            fill += '<td id="textlink" class="DG_VehList_B"><a href="'+ invdetails +'"><b>' + arg.InvPageList[i].Year + ' ' + arg.InvPageList[i].Make + ' ' + arg.InvPageList[i].Model + ' ' + arg.InvPageList[i].Trim + price + '</b><br>' + engines + ' ' + cylinders + trans + excolor + interior +'<br/><br/></a><div style="text-align:right; display:inline;"><a href="'+ invdetails +'"><div class="S_CarDesc1_Photo" style="float:left;" >' + imagecount + '</div></a>' + UnityMediaVideoDiv + '</div></td><td class="DG_VehList_C">VIN: ' + vin + "<br>Body Type: " + arg.InvPageList[i].BodyType + stockno.toUpperCase() + miles + '</td><td class="DG_VehList_D">'+ carfaxlink +'</td></tr>';
        }    
        fill += '</tbody></table>';
        invdiv.innerHTML = fill;
        totalrec = arg.InvMinMax.Count;
        setpages();
    }
    document.getElementById("loading").style.visibility = "hidden";
    if(typeof UnityMediaVendorDealerID2 !== 'undefined' && UnityMediaVendorDealerID2 != ""){ UnityMediaWorksShowVideo(); }
}

function setpages()
{
    var visi = visi2 = 1;
    var pgtop = document.getElementById("pgtop");
    pgtop.innerHTML = "";
    setpagetext();
    
    if(endrow >= totalrec){
        visi = 0;
        pgtop.innerHTML = "";
    }else{
        pgtop.innerHTML = '<a href="javascript:void(0);" onclick="invPage(-1)">Next</a>';
    }
    if(endrow <= limit){
        visi2 = 0;
    }else{
        pgtop.innerHTML = (visi)? pgtop.innerHTML + '&nbsp;|&nbsp;<a href="javascript:void(0);" onclick="invPage(-2)">Previous</a>' : '<a href="javascript:void(0);" onclick="invPage(-2)">Previous</a>' ;
    }    
        
    if(visi || visi2)
        pgtop.innerHTML = pgtop.innerHTML + "&nbsp;|&nbsp;";
        
    pgtop.innerHTML += "Page(s)&nbsp;"      
    
    document.getElementById("tdnextprev2").innerHTML =  pgtop.innerHTML + pgbothtml;
    visi = Math.abs(endrow / limit);
    if(document.getElementById("ipg"+ visi)){
        document.getElementById("ipg"+ visi).style.color = "#1fc1a9";
        document.getElementById("ipgb"+ visi).style.color = "#1fc1a9";
    }
}

function setpagetext()
{
    var pgcnt = 1;
    var from = (totalrec)? startrow : totalrec;
    var to = (totalrec > endrow)? endrow : totalrec;
    var pl = (invseltype == 'All')? "Now Viewing: " + invseltype : "Now Viewing: " + invseltype + " &raquo; " + ((invfilter.match("-1,0"))? "No Price" : invfilter);
    
    pages = Math.ceil(totalrec / limit);
    document.getElementById("typefeature").innerHTML = "<strong>" + pl + "</strong>";
    document.getElementById("currentrecords").innerHTML =  "<strong>" +from + " - " + to + "</strong> ";
    document.getElementById("totalrecords").innerHTML = "of " + "<strong>" + totalrec + "</strong>";

    var pagespan = document.getElementById("ipages");
    var pgbot = document.getElementById("pgbot");
    var pgs;
    pagespan.innerHTML = "";
    pgbothtml = "";
    pages = Math.ceil(totalrec / limit);
    
    var currentpage = startrow / limit;
    var cpglimit = (pages < cr_pglimit)? pages : cr_pglimit;
    var pgdiff = (pages < cr_pglimit)? cr_pglimit - pages : 0;
    if(pages < cr_pglimit){
        cr_endpg = pages;
        cr_startpg = 0;
    }    
    if(currentpage > cr_endpg){
        cr_startpg += (cr_pglimit - pgdiff);
        cr_endpg += (cr_pglimit - pgdiff);
        if(pages < cr_endpg)
            cr_endpg = pages;        
    }
    if(cr_startpg > currentpage){
        cr_startpg -= (cr_pglimit + pgdiff);
        if(pages <= cr_endpg)
            cr_endpg = (cr_startpg + cpglimit);
        else    
            cr_endpg -= (cr_pglimit + pgdiff);
    }     

//    if(!pages)
//        pages=1;
    //for(pgcnt=0;pgcnt<pages;pgcnt++){
    for(pgcnt=cr_startpg;pgcnt<cr_endpg;pgcnt++){
        pgs = pgcnt + 1;
        pagespan.innerHTML = pagespan.innerHTML + "<a id='ipg"+ pgs +"' href='javascript:void(0);' onclick=invPage("+ (pgcnt) +")>"+ pgs +"</a>&nbsp;";
        pgbothtml = pgbothtml + "<a id='ipgb"+ pgs +"' href='javascript:void(0);' onclick=invPage("+ (pgcnt) +")>"+ pgs +"</a>&nbsp;"; 
    } 
    pagespan.innerHTML += " of&nbsp;<strong>" + pages + "<strong>";   
    pgbothtml += " of&nbsp;<strong>" + pages + "<strong>";   
}

function invPage(nextprev)
{
    pages = Math.ceil(totalrec / limit);
    if(!pages)
        pages=1;

    if((nextprev == -1) && (totalrec >= endrow)){
        startrow += limit;
        endrow += limit;
    }else if(nextprev == -2 && startrow != 1){
        startrow -= limit;
        endrow -= limit;
    }else{
        startrow = (nextprev * limit) + 1;
        endrow = (nextprev * limit) + limit;
    }
    invpagefilter(invfilter, invtype);
}


function invpagefilter(filter, type)
{
    var params;
    new_vehiclepage = getQuerystring('vstatus');
    if(new_vehiclepage === undefined){ new_vehiclepage = 2 }
    vehicletype = getQuerystring('vtype');
    if(vehicletype === undefined){ vehicletype = '%' }
    vehicletypeExclude = getQuerystring('vtypeExclude');
    if(vehicletypeExclude === undefined){ vehicletypeExclude = '-1'; }

            
    filter = trim(filter);
    if(invfilter != filter && type < 7){
        startrow = 1, endrow = limit;
        cr_startpg = 0, cr_endpg = cr_pglimit;
    }       
    invtype =  type;
    invfilter = filter;
    
    document.getElementById("loading").style.visibility = "visible";
    switch(type){
    case 0:
        invseltype = "All";
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ '%' +'|'+ '%' +'|'+ '-1,20000000' +'|'+ '0-20000000' +'|'+ '%' +'|'+ '%' +'|'+ '%';
        break;
    case 1: // make
        invseltype = "Make";
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ filter +'|'+ '%' +'|'+ '-1,20000000' +'|'+ '0-20000000' +'|'+ '%' +'|'+ '%' +'|'+ '%';
        break;
    case 2: // model
        invseltype = "Model";
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ '%' +'|'+ filter +'|'+ '-1,20000000' +'|'+ '0-20000000' +'|'+ '%' +'|'+ '%' +'|'+ '%';
        break;
    case 3: // price
        invseltype = "Price";
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ '%' +'|'+ '%' +'|'+ filter +'|'+ '0-20000000' +'|'+ '%' +'|'+ '%' +'|'+ '%';
        break;
    case 4: // mileage
        invseltype = "Mileage";
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ '%' +'|'+ '%' +'|'+ '-1,20000000' +'|'+ filter +'|'+ '%' +'|'+ '%' +'|'+ '%';
        break;
    case 5: // color
        invseltype = "Color";
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ '%' +'|'+ '%' +'|'+ '-1,20000000' +'|'+ '0-20000000' +'|'+ filter +'|'+ '%' +'|'+ '%';
        break;
    case 6: // bodytype
        invseltype = "Body Type";
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ '%' +'|'+ '%' +'|'+ '-1,20000000' +'|'+ '0-20000000' +'|'+ '%' +'|'+ filter +'|'+ '%';
        break;
    case 7:
    case 8:
    case 9: // year on select box
        set_select(0);
        var sel = document.getElementById("selYear");
        var sy = sel.options[sel.selectedIndex].value;
        sel = document.getElementById("selMake");
        var smk = sel.options[sel.selectedIndex].value;
        sel = document.getElementById("selModel");
        var smo = sel.options[sel.selectedIndex].value;
        invseltype = "";
        
        if(type == 7) filter = sy; else if(type == 8) filter = smk; else filter = smo;
        if(filter != invselymm)
            startrow = 1, endrow = limit;
        invselymm = filter;
                
        if(sy =='%') invfilter = " All Years"; else invfilter = " " + sy;
        if(smk =='%') invfilter += " - All Makes"; else invfilter += " - " + smk;  
        if(smo =='%') invfilter += " - All Models"; else invfilter += " - " + smo; 
                       
        params = dlr_id +'|'+ startrow +'|'+ endrow +'|'+ smk +'|'+ smo +'|'+ '-1,20000000' +'|'+ '0-20000000' +'|'+ '%' +'|'+ '%' +'|'+ trim(sy);
        ifillSelects(type,invobj);
        break;           
    }
    if(params)
        ret1 = DealerWebsites.DealerWebService.GetInventoryPaging(params + '|' + new_vehiclepage + '|' + vehicletype + '|' + vehicletypeExclude, sort, icomplete, itimeout, ierror);
}

function invSort(type)
{
    if(type != 12){
        document.getElementById("sort"+type).style.color = "#10659e";
        document.getElementById("sortimg"+type).style.visibility = "visible";
        document.getElementById("sortimg"+type).style.width = "auto";
    }
    if(prevsort == type){
        if(sort % 2){
            sort = type;
            document.getElementById("sortimg"+type).src = "/images/pics/sort_arrow/up.gif"
        }else{ 
            sort = type+1;
            document.getElementById("sortimg"+type).src = "/images/pics/sort_arrow/down.gif"
        }
    }else if(prevsort){
        document.getElementById("sort"+prevsort).style.color = "#000";
        document.getElementById("sortimg"+prevsort).style.visibility = "hidden";
        document.getElementById("sortimg"+prevsort).style.width = "0px";
        document.getElementById("sortimg"+type).src = "/images/pics/sort_arrow/up.gif"
        sort = type;
    }else{
        sort = type;
        document.getElementById("sortimg"+type).src = "/images/pics/sort_arrow/up.gif"
    }
            
    prevsort = type;
    
    startrow = 1, endrow = limit;   // reset page nos again
    invpagefilter(invfilter, invtype)
}

function getinvCount(arg, range, type)
{
    range = range.split('||');
    if(range.length == 1)
        range[1] = range[0];
        
    var ii = jj = kk = nn = 0, tempres;
    for(ii=0; ii<arg.Makes.length; ii++){
        for(jj=0;jj<arg.Makes[ii].Models.length;jj++){
            for(kk = 0;kk < arg.Makes[ii].Models[jj].DetailsAdvSearch.length; kk++){
                tempres = arg.Makes[ii].Models[jj].DetailsAdvSearch;
                switch(type){
                case 1: //price
                    if(tempres[kk].SuggSalePrice >= parseFloat(range[0]) && tempres[kk].SuggSalePrice <= parseFloat(range[1]))
                        nn++;
                    break;
                case 2: //mileage
                    if(tempres[kk].Miles >= parseInt(range[0]) && tempres[kk].Miles <= parseInt(range[1]))
                        nn++;                        
                    break;
                case 3: //color
                    if(escape(tempres[kk].ExteriorColor) == range[0] && escape(tempres[kk].ExteriorColor == range[1]))
                        nn++;
                    break;    
                case 4: //bodytype
                    if(escape(tempres[kk].BodyType) == range[0] && escape(tempres[kk].BodyType == range[1]))
                        nn++;
                    break;    
                }
            }
        }    
    } 
    return nn;   
}

function ifillSelects(seltype, arg)
{
    var ii = jj = kk = nn = 0, tempres, tempmod, tempmak, tmphtml="", pp=qq=i=mocnt=macnt=yct=mact=moct=0;
    var selyear = selmake = selmodel = "", yval=maval=moval="";
    var objselymm = document.getElementById("selymm");
    var arrma = new Array();
    var arrmo = new Array();
    var arryr = new Array();

    switch(seltype){
    case 7:
    case 8:
    case 9:
        yval = document.getElementById("selYear").options[document.getElementById("selYear").selectedIndex].value.toLowerCase();
        maval = document.getElementById("selMake").options[document.getElementById("selMake").selectedIndex].value.toLowerCase();
        moval = document.getElementById("selModel").options[document.getElementById("selModel").selectedIndex].value.toLowerCase();

        if(!firstsel) firstsel = seltype; 
                
        if(yval == "%" && maval == "%" && moval == "%"){
            allsel = true;
            firstsel = 0;
        }else
            allsel = false;

        for(ii=0; ii<arg.Makes.length; ii++){
            for(jj=0;jj<arg.Makes[ii].Models.length;jj++, pp++){
                for(kk = 0; kk < arg.Makes[ii].Models[jj].DetailsAdvSearch.length; kk++){
                    tempres = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Year.toLowerCase();
                    tempmod = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Model.toLowerCase();
                    tempmak = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Make.toLowerCase();
                    var repeaty = 1;
                    if(seltype==7){ // year
                        if((maval =="%" || maval == tempmak) && (moval == "%" || moval == tempmod)){
                            for(i=0; i<arryr.length; i++) if(arryr[i].toLowerCase() == tempres){ repeaty = 0; break; }
                            if(repeaty) arryr[qq++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Year;
                            
                            if(yval == "%" || yval == tempres){
                                repeaty = 1;
                                for(i=0; i<arrmo.length; i++) if(arrmo[i].toLowerCase() == tempmod){ repeaty = 0; break; }
                                if(repeaty) arrmo[mocnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Model;                        

                                repeaty = 1;
                                for(i=0; i<arrma.length; i++) if(arrma[i].toLowerCase() == tempmak){ repeaty = 0; break; }
                                if(repeaty) arrma[macnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Make;                        
                            }
                        }                        
                    }else if(seltype==8){ // make
                        if((yval == "%" || yval == tempres) && (moval == "%" || moval == tempmod)){
                            if(maval =="%" || maval == tempmak){
                                for(i=0; i<arryr.length; i++) if(arryr[i].toLowerCase() == tempres){ repeaty = 0; break; }
                                if(repeaty) arryr[qq++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Year;
                                
                                repeaty = 1;
                                for(i=0; i<arrmo.length; i++) if(arrmo[i].toLowerCase() == tempmod){ repeaty = 0; break; }
                                if(repeaty) arrmo[mocnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Model;                        
                            }
                            
                            repeaty = 1;
                            for(i=0; i<arrma.length; i++) if(arrma[i].toLowerCase() == tempmak){ repeaty = 0; break; }
                            if(repeaty) arrma[macnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Make;                        
                        }                        
                    }else{ // model
                        if((yval == "%" || yval == tempres) && (maval =="%" || maval == tempmak)){
                            if(moval == "%" || moval == tempmod){
                                for(i=0; i<arryr.length; i++) if(arryr[i].toLowerCase() == tempres){ repeaty = 0; break; }
                                if(repeaty) arryr[qq++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Year;
                                
                                repeaty = 1;
                                for(i=0; i<arrma.length; i++) if(arrma[i].toLowerCase() == tempmak){ repeaty = 0; break; }
                                if(repeaty) arrma[macnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Make;                        
                            }
                            
                            repeaty = 1;
                            for(i=0; i<arrmo.length; i++) if(arrmo[i].toLowerCase() == tempmod){ repeaty = 0; break; }
                            if(repeaty) arrmo[mocnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Model;                        
                        }                        
                    }
                    
                    if(firstsel==7 && maval == "%" && moval =="%"){
                        repeaty = 1;
                        for(i=0; i<arryr.length; i++) if(arryr[i].toLowerCase() == tempres){ repeaty = 0; break; }
                        if(repeaty) arryr[qq++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Year;                            
                    }else if(firstsel==8 && yval == "%" && moval =="%"){
                        repeaty = 1;
                        for(i=0; i<arrma.length; i++) if(arrma[i].toLowerCase() == tempmak){ repeaty = 0; break; }
                        if(repeaty) arrma[macnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Make;                             
                    }else if(firstsel==9 && yval == "%" && maval =="%"){    
                        repeaty = 1;
                        for(i=0; i<arrmo.length; i++) if(arrmo[i].toLowerCase() == tempmod){ repeaty = 0; break; }
                        if(repeaty) arrmo[mocnt++] = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Model;
                    }                            
            
                }
            }
        }
        arrma.sort();
        selmake = "<option value='%'>--All--</option>";
        for(i=0; i<arrma.length; i++)
            if(maval == arrma[i].toLowerCase())
                selmake += "<option selected value=\'"+ arrma[i] +"'\>" + arrma[i] + "</option>";    
            else
                selmake += "<option value=\'"+ arrma[i] +"'\>" + arrma[i] + "</option>"; 
        
        arrmo.sort();
        selmodel = "<option value='%'>--All--</option>";
        for(i=0; i<arrmo.length; i++)
            if(moval == arrmo[i].toLowerCase())
                selmodel += "<option selected value=\'"+ arrmo[i] +"'\>" + arrmo[i] + "</option>";    
            else
                selmodel += "<option value=\'"+ arrmo[i] +"'\>" + arrmo[i] + "</option>";             
                
        arryr.sort();
        selyear = "<option value='%'>--All--</option>";
        for(i=0; i<arryr.length; i++)
            if(yval == arryr[i].toLowerCase())
                selyear += "<option selected value=\'"+ arryr[i] +"'\>" + arryr[i] + "</option>";    
            else
                selyear += "<option value=\'"+ arryr[i] +"'\>" + arryr[i] + "</option>";
                        
        objselymm.innerHTML = "<table><tr><td valign='middle'>Year: </td><td><select id='selYear' onchange=invpagefilter(this.options[this.selectedIndex].value,7)>" + selyear + "</select>&nbsp;&nbsp;</td><td valign='middle'>Make: </td><td><select id='selMake' onchange=invpagefilter(this.options[this.selectedIndex].value,8)>" + selmake + "</select>&nbsp;&nbsp;</td><td valign='middle'>Model: </td><td><select id='selModel' onchange=invpagefilter(this.options[this.selectedIndex].value,9)>" + selmodel + "</select></td>";
        break;        
        
    default:
        for(ii=0; ii<arg.Makes.length; ii++){
            selmake += "<option value=\'"+ arg.Makes[ii].Make +"'\>" + arg.Makes[ii].Make + "</option>";
            for(jj=0;jj<arg.Makes[ii].Models.length;jj++, pp++){
                arrmo[pp] = arg.Makes[ii].Models[jj].Model;
                for(kk = 0; kk < arg.Makes[ii].Models[jj].DetailsAdvSearch.length; kk++){
                    tempres = arg.Makes[ii].Models[jj].DetailsAdvSearch[kk].Year;
                    var repeaty = 1;
                    for(i=0; i<arryr.length; i++) if(arryr[i] == tempres){ repeaty = 0; break; }
                    if(repeaty) arryr[qq++] = tempres;
                }
            }
        }
        arrmo.sort();
        for(i=0; i<arrmo.length; i++)
            selmodel += "<option value=\'"+ arrmo[i] +"'\>" + arrmo[i] + "</option>";    
            
        arryr.sort();
        for(i=0; i<arryr.length; i++)
            selyear += "<option value=\'"+ arryr[i] +"'\>" + arryr[i] + "</option>";    
                        
        objselymm.innerHTML = "<table><tr><td valign='middle'>Year: </td><td><select id='selYear' onchange=invpagefilter(this.options[this.selectedIndex].value,7)><option value='%'>--All--</option>" + selyear + "</select>&nbsp;&nbsp;</td><td valign='middle'>Make: </td><td><select id='selMake' onchange=invpagefilter(this.options[this.selectedIndex].value,8)><option value='%'>--All--</option>" + selmake + "</select>&nbsp;&nbsp;</td><td valign='middle'>Model: </td><td><select id='selModel' onchange=invpagefilter(this.options[this.selectedIndex].value,9)><option value='%'>--All--</option>" + selmodel + "</select></td>";
        break;
    }
    
}

function resetselymm()
{
    if(document.getElementById("selYear")){
        document.getElementById("selYear").selectedIndex = 0;
        document.getElementById("selMake").selectedIndex = 0;
        document.getElementById("selModel").selectedIndex = 0;    
    } 
}

function trim(str)
{
    return str.replace(/^\s*/, "").replace(/\s*$/, "");
}

function set_select(obj)
{
    if(prevsel)
        document.getElementById(prevsel).style.color = "#fff";
    if(obj){    
        document.getElementById(obj).style.color = "#1fc1e9";
        prevsel = obj;
    }    
}
    
var invv2loaded = 1;