/*********************************************
 * MODEL FILTER by Blis Web Agency (STL)
 * Filters out models that do not match the
 * series specified by the advanced search.
 *********************************************/
var originaltextlist = new Array();
var originalvalueslist = new Array();
var originalclasslist = new Array();
var selectedmake = '';

function getSeries(val){

    //DEFINE EACH MODEL FOR EACH SERIES HERE
    var one_series = new Array('E88 - (2006-2009)','E82 - (2006-2009)','E87 - (2003-2007)','E81 - (2006-2009)','BMW 1 Series - ALL');
    var three_series = new Array('E93 - (2005-2009) Convertible','E92 - (2005-2009) 2 Door','E91 - (2004-2008) Wagon','E90 - (2004-2009)','E46 - (1997-2006)','E36 - (1989-2000)','E30 - (1981-1994)','E21 - (1975-1983)','BMW 3 Series - ALL ');
    var five_series = new Array('E61 - (2002-2007) Wagon','E60 - (2001-2008)','E39 - (1995-2003) Inc. Wagon','E34 - (1987-1996) Inc. Wagon','E28 - (1980-1987)','E12 - (1972-1981)','BMW 5 Series - ALL');
    var six_series = new Array('E64 - (2002-2008) Convertible','E63 - (2002-2009) 2 Door','E24 - (1975-1989) 2 Door','BMW 6 Series - ALL');
    var seven_series = new Array('F02 - (2007-2009)','F01 - (2007-2009)','E66 - (2000-2008)','E65 - (2000-2008)','E38 - (1993-2001)','E32 - (1985-1994)','E23 - (1976-1986)','BMW 7 Series - ALL');
    var eight_series = new Array('E31 - (1989-1999) 2 Door');
    var m_series = new Array('M1 - (1980-1981)','M3 - (1985-2009)','M5 - (1984-2008)','M6 - (1986-2008)','BMW M Series - ALL');
    var x_series = new Array('X6 - (2007-2009)','X5 - (1999-2009)','X3 - (2003-2006)','BMW X Series - ALL');
    var z_series = new Array('Z1 - (1988-1991) Roadster','Z3 - (1994-2002) Roadster','Z4 - (2002-2008) Roadster','Z8 - (1998-2003) Roadster','BMW Z Series - ALL');
    var mini_series = new Array('R53 - (2000-2006)','R52 - (2002-2008) Convertible','R50 - (2000-2006)','R55 - (2006-2009)','R56 - (2005-2009)','R57 - (2007-2009) Convertible','BMW MINI - ALL');
    var fifteenhundred_series = new Array('BMW 1500 - 2000 CS - (1962-1972)');
    var fifteentwo_series = new Array('BMW 1502 -2002 Tii - (1966-1977)');
    var twentyfivehundred_series = new Array('BMW 2500 -  3.3LiL - (1968-1977)');
    var cs_series = new Array('BMW 2.5 CS - 3.0 Cs - (1968-1975)');
    var misc_series = new Array('BMW Miscellaneous - ALL');
    var racing_series = new Array('BMW Racing Cars - ALL');
    
    
    var val_series = 'none';
    
    //SPECIFY EACH SERIES HERE AS IT APPEARS IN THE DROP DOWN MINUS
    //PERIODS AND WITH UNDERSCORES IN PLACE OF SPACES
    one_series.each(function(el){
        if (val == el) val_series = 'BMW1series';
    });
    
    three_series.each(function(el){
        if (val == el) val_series = 'BMW3series';
    });
    
    five_series.each(function(el){
        if (val == el) val_series = 'BMW5series';
    });
    
    six_series.each(function(el){
        if (val == el) val_series = 'BMW6series';
    });
    
    seven_series.each(function(el){
        if (val == el) val_series = 'BMW7series';
    });
    
    eight_series.each(function(el){
        if (val == el) val_series = 'BMW8series';
    });
    
    m_series.each(function(el){
        if (val == el) val_series = 'BMWMseries';
    });
    
    x_series.each(function(el){
        if (val == el) val_series = 'BMWXseries';
    });
    
    z_series.each(function(el){
        if (val == el) val_series = 'BMWZseries';
    });
    
    mini_series.each(function(el){
        if (val == el) val_series = 'BMWMINI';
    });
    
    fifteenhundred_series.each(function(el){
        if (val == el) val_series = 'BMW1500-2000CS';
    });
        
    fifteentwo_series.each(function(el){
        if (val == el) val_series = 'BMW1502-2002Tii';
    });
    
    twentyfivehundred_series.each(function(el){
        if (val == el) val_series = 'BMW2500-33LiL';
    });
    
    cs_series.each(function(el){
        if (val == el) val_series = 'BMW25CS-30CSL';
    });
    
    misc_series.each(function(el){
        if (val == el) val_series = 'BMWMiscellaneous';
    });
    
    racing_series.each(function(el){
        if (val == el) val_series = 'BMWRacingCars';
    });
    
    return val_series;
    
}

function removeAllOptions(){
        
    var options = $ES('option',$('bm_model'));
        i = 0;
        options.each(function(el2){

            //IF WE'RE WIPING THINGS OUT, LET'S AT LEAST KEEP TRACK OF
            //WHAT THE USER HAS SELECTED
            if (el2.getProperty('selected')==true)
                selectedmake = el2.getProperty('value');	            
	        
	        //NOW LET'S DELETE IT!
	        if (i > 0)
		        el2.remove();
		    i++;
                    
	        
            
        });        
}

function restoreAllOptions(filter){
    var i = 0;
    
    originalclasslist.each(function(el2){
        var myoption = new Element('option');
        
        myoption.setText(originaltextlist[i]);
        myoption.addClass(originalclasslist[i]);
        myoption.setProperty('value',originalvalueslist[i]);
        
        //CHECK IF THIS OPTION WAS PREVIOUSLY SELECTED...
        if (selectedmake != ''){
	        if (originalvalueslist[i] == selectedmake)
	        {
	            //...IT WAS! LET'S MAKE IT SELECTED AGAIN.
	            myoption.setProperty('selected',true);
	        }
        }
        
        if(el2 == filter){
            myoption.injectInside($('bm_model'));            
        }
                
        i++;
    });
             
}

function getOptionText(id,val){
    var return_value = 'none';
    $$('#'+id+' option').each(function(el){
        if (val == el.getProperty('value')){
            return_value = el.getText();
        }    
    });
    return return_value;
}

window.addEvent('domready',function(){
    
    try {
        
        $('bm_series').addEvent('change',function(){
            var series_text = getOptionText('bm_series',this.value);
            filterSeries(series_text);    
        });
        
    } catch(e){}
    
    //MARK UP OPTIONS WITH THE CORRECT CLASS
    $$('select').each(function(el){
        if(el.getProperty('name')=='Make'){
        
            var options = $ES('option',el);
            var i = 0;
            options.each(function(el2){                
                originaltextlist[i] = el2.getText();
                
                //ADD GENERIC CLASS
                el2.addClass('series_option');
                
                //ADD SERIES CLASS
                var val = el2.getProperty('value');
                originalvalueslist[i] = val;
                
                var series = getSeries(val);
                el2.addClass(series);
                originalclasslist[i] = series;
                
                i++;
            });        
        }
    });
    
    try {
        var series_text = getOptionText('bm_series',$('bm_series').getProperty('value'));
        filterSeries(series_text);    
    } catch(e){}
    
});


function filterSeries(series){
    
    //remove spaces
    var series = series.replace(' ','');
    series = series.replace(' ','');
    series = series.replace(' ','');
    series = series.replace(' ','');
    series = series.replace(' ','');
    series = series.replace(' ','');
    series = series.replace(' ','');
    series = series.replace(' ','');
    series = series.replace('.','');
    series = series.replace('.',''); 
    
    removeAllOptions();
    restoreAllOptions(series);
    
}