 

// Register/Profile store selector
brand.account.storeSelector = {
    includePath: "include",
    load: function(args) {
        var self = this;
        this.fieldIds = args.fieldIds; 
        var requestArgs = [{ 
            "logic": [{ "path": "/locator/includes/rpc/get_doors_by_country.logic"}], 
            "tmpl": [{ "path":"/locator/includes/rpc/get_doors_by_country.tmpl" }]
        }];   
        var options = {
        	onSuccess: self.onLoad,
        	onFailure: function(err) {
        		console.log("brand.account.storeSelector errback: "+err);
        	} 
        }
        // send request
        var request = new generic.jsonRPC();      
        request.fetch(this.includePath, requestArgs,options);         
    },
    
    onLoad: function(response) {
        var data = response.result.page_data; 
        var stateSelectObj = $(this.fieldIds.srcSelectId);
        var storeSelectObj = $(this.fieldIds.targetSelectId);
                
        // filter out states that don't have stores
        this.filterStates(data, stateSelectObj);

        // create list options for each state
        var contextualStoreSelect = new generic.forms.contextualOptions({
            srcSelectId: this.fieldIds.srcSelectId,
            targetSelectId: this.fieldIds.targetSelectId,
            targetSelectOptions: data.doors,
            valueKey: "DOOR_ID",
            labelKey: "DOOR_NAME"
        });
        
        if( page_data.account_buy_store && stateSelectObj && storeSelectObj ) {             
            var stateValue = data.doors_by_state[page_data.account_buy_store];
            var stateSelect = stateSelectObj.f;
            var storeSelect = storeSelectObj.f;
            
            if (stateSelectObj.isWidget) {
                // set state
                stateSelect.setValue(""); // hack: set & re-set so that contextual menu onchange runs
                stateSelect.setValue(stateValue);
                // set store 
                storeSelect.setValue(page_data.account_buy_store);
            } else {
                stateSelect.value = "";
                stateSelect.value = stateValue;
                storeSelect.value = page_data.account_buy_store;
            }
        } 
    },

    filterStates: function(data, stateSelectObj) {      
        var stateSelect = stateSelectObj.f;
        var states = stateSelect.options;

        for (var i=0; i<states.length; i++) {
            var state = states[i]; 
            if (state && !data.doors[state.value] && state.value !== "") {
                stateSelect.options[i] = null;
                 i--; 
            }
        }; 
    } 
}