
var lastHash;
var lastFinder;
var finder;
var timer;

var showTab = function(aTab) {
    var finderhash;
    var hash;
    var tabs = {
        'vrm':         'search_by_vehicle_reg',
        'makemodel':   'search_by_make_model',
        'tyrespec':    'search_by_tyre_spec'
    };
    if (!aTab) {
        aTab = '#tyres/vrm';
    };
    
    hash = aTab.replace('#','');
    
    try {
        window.clearTimeout(timer);
    } catch (e) {}

    var pos = hash.indexOf('/');
    
    if (pos > 0) {
        finderhash = hash.substring(0,pos);
        hash       = hash.substring(pos + 1);
    };
 
    if (hash != 'makemodel' && hash != 'tyrespec') {
        hash = 'vrm';
    };

    if (finderhash != lastFinder && (finderhash == 'wheels' || finderhash == 'rims' || finderhash == 'tyres')) {
        setFinder(finderhash + '/' + hash);
    } else if (finder) {
        window.location.hash = finder + '/' + hash;
    };

    lastHash = hash;

    for (var idx in tabs) {
        if (idx == hash) {
            var addFinder = '';
            if (hash == 'tyrespec') {
                addFinder = ' ' + finder;
            };
            document.getElementById(tabs[idx]).style.display = 'block';
            document.getElementById(tabs[idx] + '_control').className = idx + '_active' + addFinder;
        } else {
            document.getElementById(tabs[idx]).style.display = 'none';
            document.getElementById(tabs[idx] + '_control').className = '';
        };
    };
    
    timer = window.setInterval(function() {
        var hash = window.location.hash.substring(1);
        var last;
        
        if (lastFinder && lastHash) {
            last = lastFinder + '/' + lastHash;
            if (hash != last) {
                showTab(window.location.hash);
            };
        };
    }, 150);
};

var setFinder = function(aFinder) {
    if (!aFinder) {
        aFinder = 'tyres';
    };
    
    var pos  = aFinder.indexOf('/');
    var type = '';
    
    if (pos >= 1) {
        type += '/' + aFinder.substring(pos + 1);
        aFinder = aFinder.substring(0,pos);
    } else {
        var hash = document.location.hash;
        pos = hash.indexOf('/');
        if (pos >= 1 && pos != (parseInt(hash.length) - 1)) {
            type += '/' + hash.substring(pos + 1);
        };
    };
    
    lastFinder = aFinder;
    document.location.hash = lastFinder + type;
    
    var title = document.getElementById('page_header');
    var bread = document.getElementById('page_breadcrumb');
    var linkw = document.getElementById('link_wheels');
    var linkt = document.getElementById('link_tyres');
    var linkr = document.getElementById('link_rims');
    var info  = document.getElementById('info_graphic');
    var text  = document.getElementById('info_text');
    var info2 = document.getElementById('mm_info_graphic');
    var text2 = document.getElementById('mm_info_text');
    var spec  = document.getElementById('search_by_tyre_spec_control');
    var alt   = document.getElementById('alt_search_text');
    var sub1  = document.getElementById('reg_button_text');
    var sub2  = document.getElementById('fitment_button_text');
    var sub3  = document.getElementById('mm_search_button_text');
    var sub4  = document.getElementById('mm_fitment_button_text');
    var intro = document.getElementById('intro');
    var wheel = document.getElementById('car_wheels_widget');
    var rim   = document.getElementById('car_rims_widget');
    var tyre  = document.getElementById('car_tyres_widget');
    var head  = document.getElementById('mm_header');

    var tab   = document.getElementById('search_by_tyre_spec_control');
    
    if (tab.className.search(/active/) >= 0) {
        tab.className = 'tyrespec_active ' + lastFinder;
    };
    
    switch (aFinder) {
        case 'wheels':
            title.innerHTML = 'Car wheels with tyres finder';
            bread.innerHTML = title.innerHTML;
            linkw.style.color   = '#aaaaaa';
            linkt.style.color   = '#0000cc';
            linkr.style.color   = '#0000cc';
            wheel.style.display = 'block';
            rim.style.display   = 'none';
            tyre.style.display  = 'none';
            info.src = 'images/car_wheel_tyres_info.jpg';
            text.innerHTML  = 'We display wheel fitment details in the following format:';
            spec.innerHTML  = '<a href="javascript:showTab(\'tyrespec\');void(0);"><p class="wheel_rims">By wheel specification</p></a>';
            alt.innerHTML   = 'Search by wheel specification';
            sub1.innerHTML  = 'Find wheels';
            intro.innerHTML = 'Tell us your car registration number and we\'ll find wheels that fit';
            head.innerHTML  = 'Tell us the make, model and trim of your car to find wheels that fit';
            
        break;
        case 'rims':
            title.innerHTML = 'Wheel rims finder';
            bread.innerHTML = title.innerHTML;
            linkw.style.color   = '#0000cc';
            linkt.style.color   = '#0000cc';
            linkr.style.color   = '#aaaaaa';
            wheel.style.display = 'none';
            rim.style.display   = 'block';
            tyre.style.display  = 'none';
            info.src = 'images/rim_width_info.jpg';
            text.innerHTML = 'We display wheel rim fitment details in the following format:';
            spec.innerHTML = '<a href="javascript:showTab(\'tyrespec\');void(0);"><p class="wheel_rims">By rim specification</p></a>';
            alt.innerHTML  = 'Search by rims specification';
            sub1.innerHTML = 'Find rims';
            intro.innerHTML = 'Tell us your car registration number and we\'ll find rims that fit';
            head.innerHTML  = 'Tell us the make, model and trim of your car to find rims that fit';
        break;
        case 'tyres':
        default:
            title.innerHTML = 'Car tyres finder';
            bread.innerHTML = title.innerHTML;
            linkw.style.color   = '#0000cc';
            linkt.style.color   = '#aaaaaa';
            linkr.style.color   = '#0000cc';
            wheel.style.display = 'none';
            rim.style.display   = 'none';
            tyre.style.display  = 'block';
            info.src            = 'images/car_tyres_info.jpg';
            text.innerHTML = 'We display tyre fitment details in the same format as they\'re shown on a tyre. For example:';
            spec.innerHTML = '<a href="javascript:showTab(\'tyrespec\');void(0);"><p class="wheel_rims">By tyre specification</p></a>';
            alt.innerHTML  = 'Search by tyre specification';
            sub1.innerHTML = 'Find tyres';
            intro.innerHTML = 'Tell us your car registration number and we\'ll find tyres that fit';
            head.innerHTML  = 'Tell us the make, model and trim of your car to find tyres that fit';
            
            lastFinder = 'tyres';
        break;
    };
    info2.src       = info.src;
    text2.innerHTML = text.innerHTML;
    sub2.innerHTML  = sub1.innerHTML;
    sub3.innerHTML  = sub1.innerHTML;
    sub4.innerHTML  = sub1.innerHTML;
    finder = lastFinder;
    
    /*var mm_mdl = document.getElementById('makemodel_model');
    var mm_trm = document.getElementById('makemodel_trim');
    
    if (mm_mdl) {
        mm_mdl.innerHTML = '<option value="0">-</option>';
        mm_trm.innerHTML = mm_mdl.innerHTML;
    };*/
         
    gotoStep('one');
    
    var mm_trm = document.getElementById('makemodel_trim');
    
    if (mm_trm && mm_trm.selectedIndex != 0) {
        gotoStep('eleven');
    } else {
        gotoStep('ten');
    };
      
};
var gotoStep = function(step) {

    var searchByReg       = document.getElementById('search_by_registration');
    var searchByAlt       = document.getElementById('alternative_searches');
    var busy              = document.getElementById('busy');
    var searchResults     = document.getElementById('tyre_spec');
    var searchInfo        = document.getElementById('current_fitment');
    var searchOptions     = document.getElementById('options_container');
    var searchUpsteps     = document.getElementById('upsteps_container');
    var moreOptions       = document.getElementById('more_options');
    
    var mmMoreOptions     = document.getElementById('mm_more_options');
    var mmOptions         = document.getElementById('mm_options_container');
    var mmUpsteps         = document.getElementById('mm_upsteps_container');
    var mmResults         = document.getElementById('makemodel_results');
    var mmSelection       = document.getElementById('make_model_selection');
    var mmButton          = document.getElementById('makemodel_button');
    var mmBusy            = document.getElementById('mm_busy');
    var mmSearchInfo      = document.getElementById('mm_current_fitment');
    
    var errorPanel        = document.getElementById('error_message');
    var errorPanel2       = document.getElementById('mm_error_message');
    
    moreOptions.innerHTML     = '<a href="javascript:gotoStep(\'four\');">Show other fitments</a>';
    mmMoreOptions.innerHTML   = '<a href="javascript:gotoStep(\'fourteen\');">Show other fitments</a>';
    busy.style.display        = 'none';
    mmBusy.style.display      = 'none';
    errorPanel.style.display  = 'none';
    errorPanel2.style.display = 'none';

    switch (step) {
        case 'one':
            searchResults.style.display = 'none';
            searchInfo.style.display    = 'none';
            searchUpsteps.style.display = 'none';
            searchOptions.style.display = 'block';
            searchByReg.style.display   = 'block';
            searchByAlt.style.display   = 'none'; //'block';
            break;
        case 'two':
            busy.style.display          = 'block';
            break;
        case 'three':
            searchResults.style.display = 'block';
            searchInfo.style.display    = 'block';
            searchUpsteps.style.display = 'none';
            searchOptions.style.display = 'block';
            searchByReg.style.display   = 'none';
            searchByAlt.style.display   = 'none';
            break;
        case 'four':
            searchUpsteps.style.display = 'block';
            searchOptions.style.display = 'none';
            moreOptions.innerHTML = '<a href="javascript:gotoStep(\'five\');">Hide other fitments</a>';
            break;
        case 'five':
            searchUpsteps.style.display = 'none';
            searchOptions.style.display = 'block';
            break;
        case 'ten':
            mmResults.style.display    = 'none';
            mmSearchInfo.style.display = 'none';
            mmSelection.style.display  = 'block';
            mmButton.style.display     = 'none';
            mmOptions.style.display    = 'block';
            mmUpsteps.style.display    = 'none';        
            break;
        case 'eleven':
            mmButton.style.display     = 'block';
            mmSearchInfo.style.display = 'none';
            mmResults.style.display    = 'none';
            mmSelection.style.display  = 'block';
            mmOptions.style.display    = 'block';
            mmUpsteps.style.display    = 'none'; 
            break;
        case 'twelve':
            mmSearchInfo.style.display = 'block';
            mmResults.style.display    = 'block';
            mmSelection.style.display  = 'none';
            mmButton.style.display     = 'none';
            mmOptions.style.display    = 'block';
            mmUpsteps.style.display    = 'none';
            break;
        case 'thirteen':
            mmOptions.style.display   = 'block';
            mmUpsteps.style.display   = 'none';
            break;
        case 'fourteen':
            mmOptions.style.display   = 'none';
            mmUpsteps.style.display   = 'block';
            mmMoreOptions.innerHTML   = '<a href="javascript:gotoStep(\'thirteen\');">Hide other fitments</a>';
            break;
        case 'fifteen':
            mmBusy.style.display      = 'block';
            break;
    };
};
if (!checkVRM) {
    var checkVRM = function() {};
};

var showError = function(aID, aMessage) {
    var errorPanel  = document.getElementById(aID);
    var errorText   = document.getElementById(aID + '_text');
    
    errorText.innerHTML = aMessage;
    errorPanel.style.display='block';
};

var gotoR2 = function(aContainer) {
    var operator    = 'Z';
    var seperator   = 'QQ';
    var oContainer  = document.getElementById(aContainer);
    var query       = null;
    
    var tags        = ['input','select'];
    var tag         = null;
    var tagValue    = null;
    var oTagGroup   = null;
    var urls = {
        'car_wheels_widget': 'http://shop.ebay.co.uk/items/Wheels-with-Tyres__W0QQ_sacatZ9888QQ_dmptZUKQ5fCarPartsQ5fAccQ5fWheelsQ5ftyresQ5fRimsQ5fCarQ5fWheelsQ5fETQQ',
        'car_tyres_widget':  'http://shop.ebay.co.uk/items/Tyres__W0QQ_sacatZ9891QQ_dmptZUKQ5fCarsQ5fTyresQ5fRLQQ',
        'car_rims_widget':   'http://shop.ebay.co.uk/items/Wheel-Rims__W0QQ_sacatZ28648QQ_dmptZUKQ5fCarPartsQ5fAccQ5fWheelsQ5ftyresQ5fTrimsQ5fCarQ5fRimsQ5fETQQ'
    };
    
    if (urls[aContainer]) {
        
        for (t = 0; t < tags.length; t++) {
            tagType = tags[t];
            oTagGroup = oContainer.getElementsByTagName(tagType);
            
            for (var i = 0; i < oTagGroup.length; i++) {
                tag = oTagGroup[i];
                
                switch (tagType) {
                    case 'select':
                        value = tag.options[tag.selectedIndex].value;
                    break;
                    case 'input':
                        value = tag.value;
    
                        if (tag.type == 'checkbox' && !tag.checked) {
                            continue;
                        };
                    break;
                };
                if (value == 0) {
                    continue;
                } else if (!query) {
                    query  = urls[aContainer] + tag.name + operator + value;
                } else {
                    query += seperator + tag.name + operator + value;
                };
            };
        };
        if (!query) {
            query = urls[aContainer];
        };
        window.location.href=query;
    };    
};

var deSelectAll = function() {
    var brands = document.getElementById('filter_brands');
    var checks = brands.getElementsByTagName('input');
    var check;
    
    for (var idx in checks) {
        check = checks[idx];
        if (check.id == 'all') {
            continue;
        };
        check.checked = false;
    };
};

var checkForSubmit = function( evt ) {
    var evt = evt || window.event;
    
    if (typeof evt.keyCode != 'undefined' && evt.keyCode == '13') {
        return true;
    };
    
    return false;
};

var showDetails = function ( oContainer ) {
    var items = oContainer.getElementsByTagName('input');
    var oParent;
    var offSet = 0;
    
    for (var idx = 0; idx < items.length; idx++) {
        oItem = items[idx];
        oParent = oItem.parentNode;
        
        if (oItem.checked && oParent.getElementsByTagName('p').length > 0) {
            oParent.style.height = '60px';

            offSet = (oParent.offsetTop  + 60 + 14) - (oParent.parentNode.parentNode.scrollTop + 130);
      
            if (offSet > 0) {
                oParent.parentNode.parentNode.scrollTop = oParent.parentNode.parentNode.scrollTop + offSet;
            };
        } else {
            oParent.style.height = '14px';
        };
    };
};