<!-- HIDE FROM OLD BROWSERS
//
// FILE:   EWBrefineselect.js
// Author: Willa Zhu (PMEL/NOAA), willa@pmel.noaa.gov
// Date:   Mar 20, 2001
//
// These functions are used by CDP (Climate Data Portal) HTML files.
// index.html
//------------------------------------------------------------------


function CDP_setKeywords() {
  var keylist;
  ds = document.selectForm.dataserver;
  keylist="";
  for(i=0;i<ds.length;i++) {
    if(ds[i].checked) {
      info=ds[i].value.split("|");
      keylist+=","+info[1];
    }
  }
  if(keylist != "") keylist += ",";
  keywords_obj=document.selectForm.keywordlist.options;
  for(j=0;j<keywords_obj.length;j++) {
    key=","+keywords_obj[j].value+",";
    eval("str = /\\" + key + "/");
    result = keylist.search(str);
    if(result>=0) keywords_obj[j].selected=true;
    else keywords_obj[j].selected=false;
  }
  CDP_setMinMaxDate();
}

function CDP_setDataServer() {
  var keylist;
  ds = document.selectForm.dataserver;
  keywords_obj=document.selectForm.keywordlist.options;
  for(j=0;j<ds.length;j++) ds[j].checked=false;

  for(i=0;i<keywords_obj.length;i++) {
	if(keywords_obj[i].selected) {
      key=","+keywords_obj[i].value+",";
      eval("str = /\\" + key + "/");
      for(j=0;j<ds.length;j++) {      
        info=ds[j].value.split("|");
        keylist=","+info[1]+",";
        if(keylist.search(str) >=0) {
	      ds[j].checked=true;
	    }
	  }
	}
  }
  CDP_setParameters();
  CDP_setMinMaxDate();
}

function CDP_setParameters() {
  //Go through all the data server check boxes
  numselected = 0;
  ds = document.selectForm.dataserver;
  document.LocationSelection.setDefault();
  for(i=0;i<ds.length;i++) {
    if(ds[i].checked) {
      info=ds[i].value.split("|");
      minlon = info[2];
      maxlon = info[3];
      minlat = info[4];
      maxlat = info[5];
      EWB_setLocation(minlon,maxlon,minlat,maxlat,numselected);
      numselected++;
	}
  }
  if(numselected > 0) 
    document.LocationSelection.drawRectVect();
  else {
    document.LocationSelection.cleanRect();
  }
}

function EWB_setLocation(minlon,maxlon,minlat,maxlat,num) {
 //draw or un-draw the Rectangle
  var minlon, maxlon, minlat, maxlat;
  if(document.selectForm.minlong.value != "") {
     if(!(document.selectForm.minlong.value==-180 && 
	  document.selectForm.maxlong.value==180 && 
	  document.selectForm.minlat.value==-90 &&
	  document.selectForm.maxlat.value==90)) 
     {
        document.LocationSelection.setLocation(
		document.selectForm.minlong.value,
		document.selectForm.maxlong.value,
		document.selectForm.minlat.value,
		document.selectForm.maxlat.value);
     }
    document.selectForm.minlong.value="";
    document.selectForm.maxlong.value="";
    document.selectForm.minlat.value="";
    document.selectForm.maxlat.value="";
  }
  if(num == 0) first = true;
  else first = false;
  document.LocationSelection.setRectVect(minlon,maxlon,minlat,maxlat,first);
}

function CDP_setMinMaxDate() {
  //get Min and Max of data from selected data server
  var theMinYear, theMinMonth, theMinDay;
  var theMaxYear, theMaxMonth, theMaxDay;
  var numselected = 0;
  ds = document.selectForm.dataserver;
  for(i=0;i<ds.length;i++) {
    if(ds[i].checked) {
      numselected++;
      info=ds[i].value.split("|");
      mindate = info[6].split("-");
      maxdate = info[7].split("-");
      minyear = parseInt(mindate[0]);
      minmonth = parseInt(mindate[1]);
      minday = parseInt(mindate[2]);
      maxyear = parseInt(maxdate[0]);
      maxmonth = parseInt(maxdate[1]);
      maxday = parseInt(maxdate[2]);
      if(numselected == 1) {
	theMinYear=minyear;
	theMinMonth=minmonth;
	theMinDay=minday;
	theMaxYear=maxyear;
	theMaxMonth=maxmonth;
	theMaxDay=maxday;
      }
      else {
	if((minyear < theMinYear) ||
	  ((minyear==theMinYear) && (minmonth < theMinMonth)) ||
	  ((minyear==theMinYear) && (minmonth == theMinYear) && 
	  (minday < theMinDay))) 
        {
          theMinYear = minyear;
          theMinMonth = minmonth;
          theMinDay = minday;
       	}                                  
	if((maxyear > theMaxYear) ||
	  ((maxyear==theMaxYear) && (maxmonth > theMaxMonth)) ||
	  ((maxyear==theMaxYear) && (maxmonth == theMaxYear) && 
	    (maxday > theMaxDay))) 
        {
          theMaxYear = maxyear;
          theMaxMonth = maxmonth;
          theMaxDay = maxday;
       	} 
      }
    }
  }
  if(numselected == 0) {  //set to default
    document.selectForm.minYear.options[0].selected = true;
    document.selectForm.minMonth.options[0].selected = true;
    document.selectForm.minDay.options[0].selected = true;
    document.selectForm.maxYear.options[0].selected = true;
    document.selectForm.maxMonth.options[0].selected = true;
    document.selectForm.maxDay.options[0].selected = true;
  }
  else { 
    CDP_setSelectedValue(document.selectForm.minYear,theMinYear);
    CDP_setSelectedValue(document.selectForm.minMonth,theMinMonth);
    CDP_setSelectedValue(document.selectForm.minDay,theMinDay);
    CDP_setSelectedValue(document.selectForm.maxYear,theMaxYear);
    CDP_setSelectedValue(document.selectForm.maxMonth,theMaxMonth);
    CDP_setSelectedValue(document.selectForm.maxDay,theMaxDay);
  }  
}

function CDP_setSelectedValue(selobj,val) {
  var found = false;
  for(i=0;i<selobj.length && found == false ;i++) {
    if(parseInt(selobj[i].value) == val) {
      found = true;
      selobj[i].selected = true;
    }
  }
}

function CDP_getSelectedValue(selobj) {
  ind = selobj.selectedIndex;
  return(selobj[ind].value);
}
	
function CDP_earlierThanMinDate(dat) {
  minyear=CDP_getSelectedValue(document.selectForm.minYear);
  minmonth=CDP_getSelectedValue(document.selectForm.minMonth);
  minday=CDP_getSelectedValue(document.selectForm.minDay);
  result=false;
  y = parseInt(dat[0]);
  m = parseInt(dat[1]);
  d = parseInt(dat[2]);
  if((y < minyear) || 
     ((y==minyear) && (m < minmonth)) ||
	 ((y==minyear) && (m==minmonth) && (d < minday)))
     result=true;
  return(result);
}

function CDP_laterThanMaxDate(dat) {    
  maxyear=CDP_getSelectedValue(document.selectForm.maxYear);
  maxmonth=CDP_getSelectedValue(document.selectForm.maxMonth);
  maxday=CDP_getSelectedValue(document.selectForm.maxDay);
  y = parseInt(dat[0]);
  m = parseInt(dat[1]);
  d = parseInt(dat[2]);
  result=false;
  if((y> maxyear) || 
     ((y==maxyear) && (m > maxmonth)) ||
	 ((y==maxyear) && (m==maxmonth) && (d > maxday)))
     result=true;
  return(result);
}

function CDP_outDateRange(mindate,maxdate) {
  result=false;
  if(CDP_earlierThanMinDate(maxdate) || CDP_laterThanMaxDate(mindate)) 
	result=true;
  return (result);
}

function CDP_outLonRange(min,max) {    
  selected_minlon = parseFloat(document.LocationSelection.getMinLon());
  selected_maxlon = parseFloat(document.LocationSelection.getMaxLon());
  if(selected_maxlon < selected_minlon) selected_maxlon += 360;
  if(max < min)    max += 360;
  result=false;
  if(selected_maxlon < min || selected_minlon > max)
    result=true;
  return(result);
}

function CDP_outLatRange(min,max) {    
  selected_minlat = parseFloat(document.LocationSelection.getMinLat());
  selected_maxlat = parseFloat(document.LocationSelection.getMaxLat()); 
  result=false;
  if(selected_maxlat < min || selected_minlat > max)
    result=true;
  return(result);
}

function CDP_outLocationRange(minlon,maxlon,minlat,maxlat) {
  result=false;
  if(CDP_outLatRange(minlat,maxlat) || CDP_outLonRange(minlon,maxlon)) 
	result=true;
  return (result);
}

function CDP_validateServers() {
  var url_str="/cdp/servlet/gov.noaa.cdp.web.CDPCollection";

  numselected=0;
  ds = document.selectForm.dataserver;
  for(i=0;i<ds.length;i++) {
    if(ds[i].checked) 
        numselected++;
  }
  if(numselected == 0) 
    alert("You must select one or more Keywords, \n" +
	      "OR, one or more Data Servers.");
  else 
    if(CDP_checkRange()) {
      url_str += CDP_makeCDPConnectQuery();
      window.location=url_str;
    }
}
  
function CDP_makeCDPConnectQuery() {
  var str="?"
  ds = document.selectForm.dataserver;
  numselected=0;
  for(i=0;i<ds.length;i++) {
    if(ds[i].checked) {
      info=ds[i].value.split("|");
      if(numselected > 0) str += "&";
      str += "dataserver="+info[0];
      numselected++;
    }
  }
  str += "&startYear=" + CDP_getSelectedValue(document.selectForm.minYear);
  str += "&endYear=" + CDP_getSelectedValue(document.selectForm.maxYear);
  return(str);
}

function CDP_resetFirstPage() {
  ds = document.selectForm.dataserver;
  for(i=0;i<ds.length;i++) ds[i].checked = false; 
  CDP_setKeywords();
  CDP_setParameters();
}

function CDP_checkRange() {
  numselected=0;
  ds = document.selectForm.dataserver;
  for(i=0;i<ds.length;i++) {
    if(ds[i].checked) {
      info=ds[i].value.split("|");
      minlon = parseFloat(info[2]);
      maxlon = parseFloat(info[3]);
      minlat = parseFloat(info[4]);
      maxlat = parseFloat(info[5]);
      mindate = info[6].split("-");
      maxdate = info[7].split("-");
      if(CDP_outDateRange(mindate,maxdate) ||
	     CDP_outLocationRange(minlon,maxlon,minlat,maxlat))
        ds[i].checked=false;
      else numselected++;
    }
  }
//  CDP_setKeywords();
  CDP_setParameters();
  if(numselected == 0) {
    msg = "No data collections are available within \n";
    msg += "the given location and time range.\n";
    msg += "Please re-enter the selection again.";
    alert(msg);
    return(false);
  }
  else return(true);
}
//-->
