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 OBJECT_TYPE_A_RETAIL_CENTERS_ID = 'ot_retail_centers';
var OBJECT_TYPE_A_AREAS_ID = 'ot_areas';
var OBJECT_TYPE_A_MAJOR_RETAILERS_ID = 'ot_major_retailers';
var OBJECT_TYPE_CB_RETAIL_CENTERS_ID = 'otcb_retail_centers';
var OBJECT_TYPE_CB_AREAS_ID = 'otcb_areas';
var OBJECT_TYPE_CB_MAJOR_RETAILERS_ID = 'otcb_major_retailers';
var SELECTED_MAJOR_RETAILERS_ID = 'selected_major_retailers';
var MAJOR_RETAILER_SELECTION_CHANGE_ID = 'major_retailer_selection_change';
var OPTION2_ID = 'option2';
var OPTION2_LNK_ADVSEARCH_ID = 'lnkOpt2AdvSearch';
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';

function set_href(id, href) {
    var item = $(id);
    if (item) item.href = href;
}

Event.observe(window, 'load', function() {

    $(VIEW_TYPE_A_LIST_ID).href = 'javascript://';
    $(VIEW_TYPE_A_MAP_ID).href = 'javascript://';

    var lnk = $(OBJECT_TYPE_A_RETAIL_CENTERS_ID);
    if (lnk) { lnk.href = 'javascript://'; new Hint(OBJECT_TYPE_A_RETAIL_CENTERS_ID); }

    lnk = $(OBJECT_TYPE_A_AREAS_ID);
    if (lnk) { lnk.href = 'javascript://'; new Hint(OBJECT_TYPE_A_AREAS_ID); }

    lnk = $(OBJECT_TYPE_A_MAJOR_RETAILERS_ID);
    if (lnk) { lnk.href = 'javascript://'; new Hint(OBJECT_TYPE_A_MAJOR_RETAILERS_ID); }

    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?center=' + 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);
    onObjectTypeChanged();
}

function onObjectTypeSel(aid, cbid) {
    menuSelChange(aid, cbid, [OBJECT_TYPE_A_RETAIL_CENTERS_ID, OBJECT_TYPE_A_AREAS_ID, OBJECT_TYPE_A_MAJOR_RETAILERS_ID]);
    onObjectTypeChanged();
}


function onViewTypeChanged(cbid) {
    var a_area = $(OBJECT_TYPE_A_AREAS_ID);
    var cb_area = $(OBJECT_TYPE_CB_AREAS_ID);
    
    if (a_area && cb_area) {
        if (cbid == VIEW_TYPE_CB_LIST_ID) {
            a_area.className = 'optiondis';
            cb_area.disabled = true;
            if (cb_area.checked) onObjectTypeSel(OBJECT_TYPE_A_RETAIL_CENTERS_ID, OBJECT_TYPE_CB_RETAIL_CENTERS_ID);
        } else if (cbid == VIEW_TYPE_CB_MAP_ID) {
            a_area.className = 'option'
            cb_area.disabled = false;
        }
    }
    
    $(cbid).checked = true;
}


function onObjectTypeChanged(cbid) {
    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 cbRetailCenters = $(OBJECT_TYPE_CB_RETAIL_CENTERS_ID);
    var cbAreas = $(OBJECT_TYPE_CB_AREAS_ID);
    var cbMajorRetailers = $(OBJECT_TYPE_CB_MAJOR_RETAILERS_ID);
    var opt2 = $(OPTION2_ID);
    var opt2LnkAdvSearch = $(OPTION2_LNK_ADVSEARCH_ID);
    var eh = $(ERROR_HOLDER_ID);
    
    if (cbListView && cbMapView && cbAreas && cbRetailCenters && cbMajorRetailers && lblName && txtName && opt2 && opt2LnkAdvSearch && eh) {
        eh.style.display = 'none';
        
        var bName = (cbRetailCenters.checked && cbListView.checked);
        if (bName) {
            txtName.disabled = false;
            lblName.className = 'sblabel';
        } else {
            txtName.disabled = true;
            lblName.className = 'sblabeldis';
        }
        
        var opt2visible = (cbRetailCenters.checked && cbListView.checked);
        opt2.style.display = (opt2visible ? 'block' : 'none');

        var selMajorRetailers = $(SELECTED_MAJOR_RETAILERS_ID);
        if (selMajorRetailers) selMajorRetailers.style.display = (cbMajorRetailers.checked ? 'block' : 'none');
        
        var view = 0;
        var entity = 0;
        
        if (cbRetailCenters.checked) entity = ENTITY_RETAIL_CENTER;
        else if (cbAreas.checked) entity = ENTITY_RETAIL_AREA;
        else if (cbMajorRetailers.checked) entity = ENTITY_MAJOR_RETAILER;
        
        if (cbListView.checked) view = VIEW_LIST;
        else if (cbMapView.checked) view = VIEW_MAP;
        
        var url = 'javascript://';
        if (cbListView.checked) {
            switch (entity) {
                case ENTITY_RETAIL_CENTER: 
                    url = '/advanced-search/' + getEntityStr(entity) + '.aspx'; 
                    break;
            }
        }
        opt2LnkAdvSearch.href = url;
        
        
        url = 'javascript://';
        if (cbListView.checked) {
            switch (entity) {
                case ENTITY_MAJOR_RETAILER: 
                case ENTITY_RETAIL_CENTER: 
                    url = '/list/' + getEntityStr(entity) + '.aspx'; 
                    break;
            }
        } else if (cbMapView.checked) {
            url = '/map/' + getEntityStr(entity) + '.aspx';
        }
        document.forms[0].action = url;
        
        
        var mrs_change = $(MAJOR_RETAILER_SELECTION_CHANGE_ID);
        if (mrs_change && cbMajorRetailers.checked) mrs_change.href = '/MajorRetailerSelection.aspx?back_url=/main-search-page/' + getViewStr(view) + '/' + getEntityStr(entity) + '.aspx';
        
        
        updateCounts(entity, view);
    }
    
}

function getEntityStr(entity) {
    var en = '';
    switch (entity) {
        case ENTITY_RETAIL_CENTER: en = 'retail-center'; break;
        case ENTITY_RETAIL_AREA: en = 'retail-area'; break;
        case ENTITY_MAJOR_RETAILER: en = 'major-retailer'; break;
    }
    return en;
}

function getViewStr(view) {
    var v = '';
    switch (view) {
        case VIEW_LIST: v = 'list'; break;
        case VIEW_MAP: v = 'map'; break;
    }
    return v;
}

function updateCounts(entity, view) {
    var links = $$('a.st_lnk');
    var re = /\b((list)|(map))\/((retail-center)|(retail-area)|(major-retailer))\b/gi;
    
    var en = getEntityStr(entity);
    var v = getViewStr(view);
    
    for (var i=0; i<links.length; i++) {
        var l = links[i];
        l.href = l.href.replace(re, v + '/' + en);
    }
}

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);
}
