var VIEW_TYPE_A_LIST_ID = 'vt_list';
var VIEW_TYPE_A_MAP_ID = 'vt_map';
var VIEW_TYPE_CB_LIST_ID = 'vtcb_list';
var VIEW_TYPE_CB_MAP_ID = 'vtcb_map';
var OPTION1_LBL_NAME_ID = 'lblOpt1Name';
var OPTION1_TXT_NAME_ID = 'txtOpt1Name';
var OPTION1_TXT_MARKET_ID = 'txtOpt1Market';
var OPTION1_TXT_STATE_ID = 'txtOpt1State';
var OPTION1_TXT_ZIP_ID = 'txtOpt1ZIP';
var OPTION1_DD_MARKETTYPE_ID = 'ddOpt1MarketType';
var ERROR_HOLDER_ID = 'error_holder';

Event.observe(window, 'load', function() { 
    $(VIEW_TYPE_A_LIST_ID).href = 'javascript://';
    $(VIEW_TYPE_A_MAP_ID).href = 'javascript://';
    
    Event.observe(document.forms[0], 'submit', function(event) {
        if (!validateSearchForm()) Event.stop(event);
    });

    new Autocomplete({ id: 'txtOpt1Name', tipcss: 'txt_tip', urldelegate: function(txt) { return '/Autocomplete.ashx?major_retailer=' + txt; } });
    new Autocomplete({ id: 'txtOpt1Market', tipcss: 'txt_tip', urldelegate: function(txt) { var s = $('txtOpt1State'); var st = (s ? s.value : ''); var m = GetDDVal($('ddOpt1MarketType')); return '/Autocomplete.ashx?' + m + '=' + txt + (st ? '&state=' + st : ''); } });
    new Autocomplete({ id: 'txtOpt1State', tipcss: 'txt_tip', urldelegate: function(txt) { return '/Autocomplete.ashx?state=' + txt; } });    
});

function menuSelChange(aid, cbid, aid_list) {
    var cb = $(cbid);
    if (cb && !cb.disabled) {
        for (var i=0; i<aid_list.length; i++) {
            var a = $(aid_list[i]);
            if (a && a.className != 'optiondis') a.className = (aid_list[i] == aid ? 'optionsel' : 'option');
        }
        cb.checked=true;
    }
}

function onViewTypeSel(aid, cbid) {
    menuSelChange(aid, cbid, [VIEW_TYPE_A_LIST_ID, VIEW_TYPE_A_MAP_ID]);
    onViewTypeChanged(cbid);
}

function onViewTypeChanged(cbid) {
    $(cbid).checked = true;
    
    var lblName = $(OPTION1_LBL_NAME_ID);
    var txtName = $(OPTION1_TXT_NAME_ID);
    var cbListView = $(VIEW_TYPE_CB_LIST_ID);
    var cbMapView = $(VIEW_TYPE_CB_MAP_ID);
    var eh = $(ERROR_HOLDER_ID);
    
    if (cbListView && cbMapView && lblName && txtName && eh) {
        eh.style.display = 'none';
        
        var bName = !cbMapView.checked;
        if (bName) {
            txtName.disabled = false;
            lblName.className = 'sblabel';
        } else {
            txtName.disabled = true;
            lblName.className = 'sblabeldis';
        }
        
        var view = 0;
        if (cbListView.checked) view = VIEW_LIST;
        else if (cbMapView.checked) view = VIEW_MAP;
        
        url = 'javascript://';
        if (cbListView.checked) {
            url = '/list/major-retailer.aspx'; 
        } else if (cbMapView.checked) {
            url = '/map/major-retailer.aspx';
        }
        document.forms[0].action = url;
        
        
        updateCounts(view);
    }
    
}

function getViewStr(view) {
    var v = '';
    switch (view) {
        case VIEW_LIST: v = 'list'; break;
        case VIEW_MAP: v = 'map'; break;
    }
    return v;
}

function updateCounts(view) {
    var links = $$('a.st_lnk');
    var re = /\b((list)|(map))\/(major-retailer)\b/gi;
    
    var v = getViewStr(view);
    for (var i=0; i<links.length; i++) {
        var l = links[i];
        l.href = l.href.replace(re, v + '/major-retailer');
    }
}

function validateSearchForm() {
    var err = new Array();

    var cbMapView = $(VIEW_TYPE_CB_MAP_ID);

    if (cbMapView) {
        var market = trim(GetValue(OPTION1_TXT_MARKET_ID));
        var state = trim(GetValue(OPTION1_TXT_STATE_ID));
        var zip = trim(GetValue(OPTION1_TXT_ZIP_ID));
        var market_type = trim(GetDDText($(OPTION1_DD_MARKETTYPE_ID)));
        

        if (cbMapView.checked) {
            if (zip.length == 0 && market.length == 0) err[err.length] = 'Please define ZIP or/and ' + (market_type.length > 0 ? market_type : 'market');
        }

        var eh = $(ERROR_HOLDER_ID);
        if (eh) {
            if (err.length > 0) {
                eh.innerHTML = '<span class="error">' + err.join('<br/>') + '</span>';
                eh.style.display = 'block';
            } else {
                eh.style.display = 'none';
            }
        }
    }
    
    return (err.length == 0);
}
