var ds=new Array;

function secondState() {
  var e1=document.getElementById('firstnt'), e2=document.getElementById('secondnt');
  e1.style.display='none'; e2.style.display='block';
}

function nSelected(sel) {
  var opt=sel.options, n=0;
  for (i=0;i<opt.length;++i) if (opt[i].selected) ++n;
  return n;
}

function doPop(request, response) {
    var s=this.slave_el, m=this.master_el;
    s.length=0;
    if (nSelected(m) > 1) s.disabled=true;
    else {
      s.disabled=false;
      if (this.topLine) s.options[0] = new Option(' - - - ','');
      for(var i=0;i<response.length;i++) {
        s.options[s.length]=new Option(response[i].name,response[i].value);
      }
    }
    secondState();
}

function runPop(ev, obj) {
    el=obj.slave_el;
    el.length=0;
    el.options[el.options.length]=new Option("Please wait");
   // The documentation lists the first parameter (here: req) as an object called oRequest,
   //  but I guess it can have a parameter string. [miles]
    var req = 'param='+obj.master_el[obj.master_el.selectedIndex].value;
    req += '&grp='+obj.grp;
    obj.ds.sendRequest(req, obj.popFun, obj);
}

function doLookup(ev, response, obj) {
    obj.master_el=document.getElementById(obj.master);
    obj.slave_el=document.getElementById(obj.slave);
}

function autoPop(master, slave, url, topLine, grp) {
    var obj={};
    //
    obj.popFun = doPop;
    obj.topLine = topLine;
    obj.grp = grp;
    //
    obj.ds=new YAHOO.util.DataSource(url, {
        responseSchema: {fields: ['name','value'], resultNode: 'option'},
        responseType: YAHOO.util.DataSource.TYPE_XML});
    ds.push(obj);
    obj.master=master;
    obj.slave=slave;
    YAHOO.util.Event.onDOMReady(doLookup,obj);
    YAHOO.util.Event.addListener(obj.master,'change',runPop,obj);
}

/*
           ...                                      ..
               Image swap on select / blur                 .
        ::                                    ...

   when srcId (can be a list) changes, we check trgId for selection;
   if something is selected, img = focusImg; else = blurImg.


                                                              */
// set continue button state, according to "target" selectedId
function setContButtonState(e,a) {
  var s=document.getElementById(a.trgId);
  if (s.selectedIndex < 0) {
    blurImg(e,a);
  }
  else {
    focusImg(e,a);
  }
}

//  blur the image, and disable the button
function blurImg(e,a) {
  var imgEl = document.getElementById(a.imgId);
  imgEl.src = a.blurImg;
  var btnEl = document.getElementById(a.btnId);
  btnEl.disabled=true;
}

//  focus the image, and enable the button
function focusImg(e,a) {
  var imgEl = document.getElementById(a.imgId);
  imgEl.src = a.focusImg;
  var btnEl = document.getElementById(a.btnId);
  btnEl.disabled=false;
}

//  adds listeners to handle button/img focus and blur for dual selection of PA
function addEventListeners(srcId, trgId, imgId, blrImg, focusImg, btnId) {
  var a={};
  a.trgId = trgId
  a.blurImg=blrImg;
  a.focusImg=focusImg;
  a.imgId=imgId;//  need to pass the ID - the element hasn't been drawn yet.
  a.btnId=btnId;
  YAHOO.util.Event.addListener(srcId, 'change', blurImg, a);
  YAHOO.util.Event.addListener(trgId, 'change', setContButtonState, a);
}

