function registerOptionsCheckBox(cbid, optid) {
    var cb = $(cbid);
    var opt = $(optid);
    if (cb && opt) {
        Event.observe(cb, 'click', function(event) { 
            opt.style.display = (cb.checked ? 'block' : 'none'); 
        });
        opt.style.display = (cb.checked ? 'block' : 'none'); 
    }
}

var _area_id = null;

function getPropBag() {
    var pb = $('_PROPERTY_BAG');
    return (pb ? pb.value : null);
}

function retrieveAreaID(onsuccess) {
    var pb = getPropBag();
    if (pb) {
        var proxy = new PurchaseDataAjax();
        proxy.GetAreaID(pb, function(id) {
            _area_id = id;
            if (onsuccess) eval(onsuccess);
        }, function() {
            _area_id = null;
        });
    }
}

function initInfo() {
    retrieveAreaID('{onCenterOptionsChanged();onRetailerOptionsChanged();}');
}


function onCustomAreaModified(hidid) {
    var hid = $(hidid);
    if (hid) { hid.value = CUSTOM_AREA_INSTANCE.lastJSBoundary; }
}

function showCentersInfo(html) {
    var info = $('center_info');
    if (info) info.innerHTML = html;
}

function onCenterOptionsChanged() {
    showCentersInfo("Loading...");
    if (!_area_id) { retrieveAreaID('onCenterOptionsChanged()'); }
    else {
        var proxy = new PurchaseDataAjax();
        proxy.GetCentersCount(_area_id, getCentersFilter(), function(cnt) {
            if (cnt == -1) retrieveAreaID('onCenterOptionsChanged()');
            else showCentersInfo("Total: " + cnt);
        }, function() {
            showCentersInfo("Not Available");
        });
    }
}

function showRetailersInfo(html) {
    var info = $('retailer_info');
    if (info) info.innerHTML = html;
}

var _dont_update_retailers = false;
function onRetailerOptionsChanged() {
    if (_dont_update_retailers) return;
    
    showRetailersInfo("Loading...");
    if (!_area_id) retrieveAreaID('onRetailerOptionsChanged()');
    else {
        var proxy = new PurchaseDataAjax();
        proxy.GetRetailersCount(_area_id, getRetailersFilter(), function(cnt) {
            if (cnt == -1) retrieveAreaID('onRetailerOptionsChanged()');
            else showRetailersInfo("Total: " + cnt);
        }, function() {
            showRetailersInfo("Not Available");
        });
    }
    
}


function getCentersFilter() {
    try {
        var attr = getCenterIDs();
        
        
        ret = {CenterName:GetValue(attr.CenterName),
            RetailerName:GetValue(attr.RetailerName),
            CenterType:GetDDValue(attr.CenterType),
            PropertySizeFrom:GetValue(attr.PropertySizeFrom),
            PropertySizeTo:GetValue(attr.PropertySizeTo),
            YearBuiltFrom:GetDDValue(attr.YearBuiltFrom),
            YearBuiltTo:GetDDValue(attr.YearBuiltTo),
            YearRenovatedFrom:GetDDValue(attr.YearRenovatedFrom),
            YearRenovatedTo:GetDDValue(attr.YearRenovatedTo)
            };
  
        return Object.toJSON(ret);
    } catch (e) {
        return '{}';
    }
}

var _retailer_options_list = new Array();
function regRetOptCB(cbid) {
    var cb = $(cbid);
    if (cb) {
        _retailer_options_list[_retailer_options_list.length] = cb;
        Event.observe(cb, 'click', function(event) { 
            onRetailerOptionsChanged();
        });        
    }
}

function selectAll() {
    _dont_update_retailers = true;
    for (var i=0; i<_retailer_options_list.length; i++)
        _retailer_options_list[i].checked = true;
    _dont_update_retailers = false;
    onRetailerOptionsChanged();
}

function unselectAll() {
    _dont_update_retailers = true;
    for (var i=0; i<_retailer_options_list.length; i++)
        _retailer_options_list[i].checked = false;
    _dont_update_retailers = false;
    onRetailerOptionsChanged();
}

function getRetailersFilter() {
    var sel = new Array();
    for (var i=0; i<_retailer_options_list.length; i++) {
        var cb = _retailer_options_list[i];
        if (cb.checked) sel[sel.length] = cb.value;
    }
    return Object.toJSON(sel);
}

