﻿
var jsel = {
  // config for first option text e.g '-' or 'Please Select'
  blankOption: '-',
  // Removes the children of the target element
  removeChildren: function(elm) {
     while(elm.hasChildNodes()){
        elm.removeChild(elm.firstChild);
     }
  },
  // Gets current selected value
  getSelVal: function(objSrcSelect) {
    if (objSrcSelect.nodeName == 'SELECT'){
      var children = objSrcSelect.childNodes;
      for (var i=0, j=children.length; i<j; i++) {
        if (children[i].selected === true) {
          return children[i];
        }
      }
    } else {
      return false;
    }
  },
  // Creates select options
  createOpt: function(strVal,strText,objTargetSelect, selectedVal) {
    var opt = document.createElement('OPTION');
    opt.setAttribute('value',strVal);
    var text = document.createTextNode(strText);
    opt.appendChild(text);
    opt.selected = selectedVal;
    objTargetSelect.appendChild(opt);
    
  },
  // Loads in the data to the select based on the previous selection
  loadData: function(objTargetSelect, selectedViewId) {
  
    statusBox._addStatus( "viewlist", "Loading Services" );
    //var val = jsel.getSelVal(objSrcSelect);
    jsel.removeChildren(objTargetSelect);
    //jsel.createOpt('',jsel.blankOption,objTargetSelect);
    //for(prop in objData[val]) {
    //  if (val) {
    //    jsel.createOpt(prop,objData[val][prop],objTargetSelect);
    //  }
    //}
    try {
        //console.log( "loading view: "+evt.target.value );
        esri.request({
            url: viewServiceUrl,
            content: {
                f: "json",
                view: "m",
		lu: currentUserLogin
            },
            callbackParamName: "callback",
            load: function(viewList){
                //alert("loaded: "+loadServices);
                for(prop in viewList) {
                    if( prop == selectedViewId ){
                        jsel.createOpt(prop,viewList[prop],objTargetSelect, true);
                    }else{
                        jsel.createOpt(prop,viewList[prop],objTargetSelect, false);
                    }
                }
                loadView({target:{value:selectedViewId}});
            },
            error: function(err){
                console.error("Unable to get view information" + err);
            }
        });
    } 
    catch (e) {
        console.error(e);
    }
    
    statusBox._removeStatus( "viewlist" );

  },
  
  loadStateData: function(objTargetSelect, selectedStateId) {
  
    statusBox._addStatus( "statelist", "Loading Services" );
    //var val = jsel.getSelVal(objSrcSelect);
    jsel.removeChildren(objTargetSelect);
    //jsel.createOpt('',jsel.blankOption,objTargetSelect);
    //for(prop in objData[val]) {
    //  if (val) {
    //    jsel.createOpt(prop,objData[val][prop],objTargetSelect);
    //  }
    //}
    try {
        //console.log( "loading view: "+evt.target.value );
        esri.request({
            url: stateServiceUrl,
            content: {
                f: "json",
                action: "menu",
                lu: currentUserLogin
            },
            callbackParamName: "callback",
            load: function(stateList){
            //alert("loaded: " + stateList);
                for(state in stateList) {
                    if( state == selectedStateId ){
                        jsel.createOpt(state,stateList[state],objTargetSelect, true);
                    }else{
                        jsel.createOpt(state,stateList[state],objTargetSelect, false);
                    }
                }
            },
            error: function(err){
                console.error("Unable to get state information" + err);
            }
        });
    } 
    catch (e) {
        console.error(e);
    }
    
    statusBox._removeStatus( "statelist" );

  }
}