<!--

// General Utility scripts

/////////////////////////////////////////////////////////////////////////////
// Javascript Popout Window for mapping documentation
// Written: Zarro (EER/GSFC), August 1998
/////////////////////////////////////////////////////////////////////////////


function reformat(file) {
var proc="http://beauty.nascom.nasa.gov/~zarro/php/ssw_print.php?file=";
url=proc+file;
popup(url);
return;
}


// get date range

function getTrange(form,frame) {
 var blank="", result=""
 var t1=getDate('day1','month1','year1',form,frame)
 if (isBlank(t1)) { 
  alert('Please complete "Start" date')
  return blank
 }
 var t2=getDate('day2','month2','year2',form,frame)
 if (isBlank(t2)) {
  alert('Please complete "End" date')
  return blank
 }
 result=t1+','+t2
 return result
}

//////////////////////////////////////////////////////////////////////////////
// get date from day/month/year widget

function getDate(day,month,year,form,frame) {
 var rdate=""
 var dd=getSelect(day,form,frame)
 if (isBlank(dd)) { 
//  alert('missing Day')
  return rdate
 }

 var mm=getSelect(month,form,frame)
 if (isBlank(mm)) { 
//  alert('missing Month')
  return rdate
 }

 var yy=getSelect(year,form,frame)
 if (isBlank(yy)) { 
//  alert('missing Year')
  return rdate
 }

 rdate=dd+'-'+mm+'-'+yy
 return rdate
} 

/////////////////////////////////////////////////////////////////////////////

// Reset Time ranges

function resetTime() {
 setSelect('day1',0)
 setSelect('month1',0)
 setSelect('year1',0)
 setSelect('day2',0)
 setSelect('month2',0)
 setSelect('year2',0)
}

/////////////////////////////////////////////////////////////////////////////
function showProps(obj,objName) {
 if (typeof(obj) != "object") { return }
 if ( !defined(objName)) {return}
 var result=""
 var count=0
 for (var i in obj) {
  result += objName + "." + i + " = " + obj[i] + "\n"
  count++
  if (count == 25) {
   alert(result)
   result=""
   count=0
  }
 }
 alert(result)
 return
}

/////////////////////////////////////////////////////////////////////////////

function getBase(frame,form) {
 var base
 if (!defined(frame)) {var frame=0}
 if (!defined(form)) {var form=0}

 if (parent.length > 0) { 
  base=parent.frames[frame].document.forms[form] 
 } else {
  base=parent.document.forms[form]
 }             
 return base
}
    

/////////////////////////////////////////////////////////////////////////////                                  
// get checked value from check box

function getCheck(name,form,frame) {
 var value=""
 if (!defined(name)) {return value}
 var base=getBase(frame,form)
 if (base.elements[name]) {
  if (base.elements[name].checked == true) {value=base.elements[name].value} 
 }
 return value
}


/////////////////////////////////////////////////////////////////////////////                                  
// set check state of check box

function setCheck(name,form,frame) {
 var value=""
 if (!defined(name)) {return value}
 var base=getBase(frame,form)
 if (base.elements[name]) {
  base.elements[name].checked=true
 }
 return value
}

/////////////////////////////////////////////////////////////////////////////                                  
// return true if check box is checked

function isChecked(name,form,frame) { 
 var base=getBase(frame,form)
 if (base.elements[name]) {
  if (base.elements[name].checked == true) {return true}
 }
 return false
}

//////////////////////////////////////////////////////////////////////////////
// clear checkboxes

function clearCheck(form,frame) {
 var etype
 var base=getBase(frame,form)
 var length=base.elements.length
 for (var i=0 ; i< length ; i++) {
  etype=base.elements[i].type
  if (etype == "checkbox") {
   base.elements[i].checked=false
  }
 }
 return true
}
         
                        
//////////////////////////////////////////////////////////////////////////////
// get index corresponding to a value in select widget

function getSelectIndex(select,value,form,frame) {
 var svalue=""
 if (!defined(select) || !defined(value)) {return -1}
 var base=getBase(frame,form)
 if (base.elements[select]) {
  for (var i=0 ; i< base.elements[select].options.length ; i++) {
   svalue=trim(base.elements[select].options[i].value)
   if (svalue == trim(value)) {return i} 
  }
 }
 return -1
}

                        
//////////////////////////////////////////////////////////////////////////////
// get value from a select widget

function getSelect(select,form,frame) {
 var value="" , svalue=""
 if (!defined(select)) {return value}
 var base=getBase(frame,form)
 if (base.elements[select]) {
  for (var i=0 ; i< base.elements[select].options.length ; i++) {
   var bool=base.elements[select].options[i].selected
   if (bool) {
    svalue=trim(base.elements[select].options[i].value)
    if (value != "") {
     value+='; '+svalue
    } else {
     value=svalue
    }     
   }
  }
 }
 return trim(value)
}


///////////////////////////////////////////////////////////////////////////////
// get checked box values 

function getChecked(name,form,frame) {
 var result="", delim=""
 var etype,ename,evalue
 if (!defined(name)) {return result}
 var base=getBase(frame,form)
 var length=base.elements.length
 for (var i=0 ; i< length ; i++) {
  etype=base.elements[i].type
  ename=base.elements[i].name
  if (etype == "checkbox" && ename == name) {
   if (base.elements[i].checked == true) {
    evalue=base.elements[i].value
    if (!isBlank(result)) {delim=', '}
    if (!isBlank(evalue)) {result+=delim+base.elements[i].value}
   }
  }  
 }
 return result
}

//////////////////////////////////////////////////////////////////////////////
// set selection in a select widget

function setSelect(select,index,form,frame) {
 if (!defined(select)) {return false}
 if (!defined(index)) {return false}
 var base=getBase(frame,form)
 if (base.elements[select]) {
  var length=base.elements[select].options.length
  if (index < 0 || index > (length-1)) {return false}
  base.elements[select].options[index].selected=true
  return true
 }
 return false
}

/////////////////////////////////////////////////////////////////////////////// 
// get text value 

function getText(name,form,frame) {
 var value=""
 if (!defined(name)) {return value}
 var base=getBase(frame,form)
 if (base.elements[name]) {
  value=trim(base.elements[name].value)
 }
 return value
}

///////////////////////////////////////////////////////////////////////////////
// set text value 

function setText(value,name,form,frame) {
 if (!defined(value)) {return false}
 if (!defined(name)) {return false}
 var base=getBase(frame,form)
 if (base.elements[name]) {
  base.elements[name].value=trim(value.toString())
 }
 return true
}


///////////////////////////////////////////////////////////////////////////////
// set text focus 

function setFocus(text,form,frame) {
 if (!defined(text)) {return false}
 var base=getBase(frame,form)
 if (base.elements[text]) {
  if (base.elements[text].type == 'text') {base.elements[text].focus()}
 }
 return true
}

///////////////////////////////////////////////////////////////////////////////
// Javascript Popout Window 
// Written: Zarro (SAC/GSFC), August 1998

// url: URL to display in window
// height: window height in pixels [def=300]
// width: window width in pixels [def=300]
// name: window name [def='popup']
// text: boolean 1 or 0; if 1 entered URL is to be displayed as text

var win

function popup(url,height,width,name,text,resize) {


if (!defined(name)) {var name='popup'}
               
// default to fit within 75% of browser window

var def_width=300
if (window.screen){
 var screen_width=parseFloat(window.screen.width)
 def_width=parseInt(0.75*screen_width)
}
if (!defined(width)) {width=def_width}
width=parseInt(width)
if (screen_width) { 
 if (width > screen_width) {width=def_width}
}

var def_height=300
if (window.screen){
 var screen_height=parseFloat(window.screen.height)
 def_height=parseInt(0.75*screen_height)
}
if (!defined(height)) {height=def_height}
height=parseInt(height)
if (screen_height) { 
 if (height > screen_height) {height=def_height}
}

var do_open=true

if (typeof(win) == "object") {
 do_open=(win.closed || win.name != name)
}

if (!defined(resize)) {resize="yes"}

if (do_open) {
 win = open("",name,"width="+width.toString()+",height="+height.toString()+",scrollbars=yes,resizable="+resize)
}

// check if URL or string text entered

if (!defined(url)) {return true}

if (!defined(text)) {text=0}
var url_entered=(url.indexOf('http://') == 0 || text == 0)
         
if (win) {

 if (!defined(win.opener)) {
  win.opener=this
 }

 win.name=name
 if (url_entered) {
  win.location=url
 } else {
  win.document.write(url)
  win.document.close()
 }

 //win.document.bgColor="yellow"

 win.focus()
} else {
 if (url_entered) {
  parent.location.href=url
 } else {
  parent.document.write(url)
  parent.document.close()
 }
}

return true

}

//////////////////////////////////////////////////////////////////////////////
// Check for valid e-mail address

function validEmail(s) {
 if (!defined(s)) {return false}

 var at_char=s.indexOf('@')
 if (at_char < 1) {
  alert('Invalid e-mail address: don\'t see \'@\' ')
  return false
 }
 return true
} 

///////////////////////////////////////////////////////////////////////////          
// Returns true if 's' contains only white space characters
// Written: Zarro (SAC/GSFC), March 1998

function isBlank(s,debug) {
 if (!defined(s)) {return false}
 var c
 for (var i=0 ;i < s.length ; i++) {
  c = s.charAt(i)
  if ((c != ' ') && (c != '\n') && (c !='\t') && (c != '\r') &&  (c != '\f') && (c != '\b') ) {
   if (defined(debug)) {alert(c)}
   return false
  }
 }
 return true
}
                 
////////////////////////////////////////////////////////////////////////////   

function doReset(form,frame) {
 clearCheck(form,frame)
 clearText(form,frame)
 var base=getBase(frame,form)
 base.reset()
 return true
}

///////////////////////////////////////////////////////////////////////////          
// Clear text fields in a form

function clearText(form,frame) {
 var base=getBase(frame,form)
 var length=base.elements.length
 var etype
 for (var i=0 ; i< length ; i++) {
  etype=base.elements[i].type
  if (etype == "hidden" || etype== "text" || etype== "textarea") {
   base.elements[i].value=""
  }
 }
 return true
}

///////////////////////////////////////////////////////////////////////////          
// Returns true if single character c 
// is contained within string s.

function charInString (c, s)
{   for (i = 0 ; i < s.length ; i++)
    {   if (s.charAt(i) == c) {return true}
    }
    return false
}

/////////////////////////////////////////////////////////////////////////////

// Trim a string of leading and trailing blanks

function trim(s) {

 var i = 0, r, result=""

// check input for valid string

 if (!defined(s)) {return result}
 if (typeof(s) != "string") {return s}
 if (s.length == 0) {return result}

// strip leading blanks

 while ((i < s.length) && isBlank(s.charAt(i))) {
  i++
 }
  
 r=s.substring (i, s.length)
 if (r.length == 0) {return result}

// strip trailing blanks
 
 i=r.length-1
 while ((i > 0) && isBlank(r.charAt(i))) {
  i--
 } 
 result=r.substring(0,i+1)

 return result


}

//////////////////////////////////////////////////////////////////////////////
// Trim a string of all blanks

function trim2(s) {
 if (!defined(s)) {return ""}

alert(s)
 var c,result
 for (i=0 ; i < s.length ; i++) {
  c=s.charAt(i)
  if (!isBlank(c)) {
   if (!defined(result)) { 
    result=c 
   } else {
    result+=c
   }
  }
 }
 return result
}

//////////////////////////////////////////////////////////////////////////////

function checkName() {
 alert('checkName called from '+checkName.caller+' in window '+self.name)
}
                     
////////////////////////////////////////////////////////////////////////////////
// update hidden fields in GBO_FORM with window checkbox values

function addValue(value,checked) {
 if (!defined(value)) {return false}
 if (!defined(checked)) {return false}
 var name = self.name         
 var current=self.opener.document.forms[0].elements[name].value
 var temp=current.split("+")
 if (checked) {
//  temp.push(value)
  temp=append(value,temp)
 } else {
//  temp.pop(value)
  temp=remove(value,temp)
 } 
 current=temp.join("+")
 self.opener.document.forms[0].elements[name].value=current
 return true
}

//////////////////////////////////////////////////////////////////////////////
// reset all check boxes

function resetAll() {
 var name = self.name 
 var length=self.document.forms[0].elements.length
 var f=self.document.forms[0] 
 var etype
 for (var i=0; i< length; i++) {
  etype=f.elements[i].type
  if (etype == "checkbox") {
   f.elements[i].checked=false
  }
 }

// update HIDDEN field in main form

 self.opener.document.forms[0].elements[name].value=""
 return true
}

////////////////////////////////////////////////////////////////////////////
// check all check boxes

function checkAll() {
 var name = self.name 
 var length=self.document.forms[0].elements.length
 var temp=new Array() 
 var value=""
 var etype
 var f=self.document.forms[0] 
 for (var i=0; i< length; i++) {
  etype=f.elements[i].type
  if (etype == "checkbox") {
   f.elements[i].checked=true
   value=f.elements[i].value
   temp=append(value,temp)
  }
 }

// update HIDDEN field in main form

 var current=temp.join("+")
 self.opener.document.forms[0].elements[name].value=current
 return true
}

///////////////////////////////////////////////////////////////////////////////
// determine which check boxes are checked

function checkValue() {
 var name = self.name 
//alert(name)
 var length=self.document.forms[0].elements.length
 var temp=new Array() 
 var value=""
 var etype,checked
 var f=self.document.forms[0] 
 for (var i=0; i< length; i++) {
  etype=f.elements[i].type
  if (etype == "checkbox") {
   checked=f.elements[i].checked
   if (checked) {
    value=f.elements[i].value
    temp=append(value,temp)
   }
  }
 }

// update HIDDEN field in main form

 var current=temp.join("+")
 self.opener.document.forms[0].elements[name].value=current
 return true
}

/////////////////////////////////////////////////////////////////////////////
// remove value from array

function remove(value,arr) {
 if (!defined(arr)) {return null}
 if (!defined(value) && arr) {return arr}

// check if present
 
 var check=where(value,arr)
 if (check < 0) {return arr}

 var length=arr.length
 if (length == 1) {return new Array()}
 var result=new Array(length-1)
 var j=0
 for (var i=0; i<length; i++) {
  if (value != arr[i]) {
   result[j]=arr[i]; j++
  }
 }
 return result
}
                                                                             
/////////////////////////////////////////////////////////////////////////////
// append value into array

function append(value,arr) {

 if ( !defined(value) && !defined(arr) ) {return null}
 if ( !defined(value) && arr ) {return arr}
 if ( !defined(arr) && value ) {return new Array(value)}
   
// check if already present

 var check=where(value,arr)
 if (check > -1) {return arr}

// otherwise append value

 var result=new Array(arr.length+1)
 for (var i=0; i< arr.length; i++) {
  result[i]=arr[i]
 }
 result[arr.length]=value
 return result
}


/////////////////////////////////////////////////////////////////////////////
// check if value is in array

function where(value,arr) {
 var result=-1
 if ( !defined(value) || typeof(arr) != "object") {return result}
 for (var i=0; i< arr.length; i++) {
  if (value == arr[i]) {return i}
 }
 return result
}

//////////////////////////////////////////////////////////////////////////////

function checkName() {
 alert('checkName called from '+checkName.caller+' in window '+self.name)
}

//////////////////////////////////////////////////////////////////////////////

function defined(variable) {
 if (typeof(variable) != 'undefined') {
  return true
 } else {
  return false
 }
} 

//////////////////////////////////////////////////////////////////////////////

function swapclass (text,spname,urlname,oldname,clname,over) {

 var str="<a class='"+clname+"' href='" + urlname +"'";
 
 if (over) 
  {
  // replace onmouseover with onmouseout
  // replace true with false
   str += " onmouseout=\"swapclass(\'" + text + "\', \'" + spname +
                    "\', \'" + urlname + "\', \'" + clname +
                    "\', \'" + oldname + "\', false)\">";
  } else {
  // replace onmouseout with onmouseover
  // replace false with true
   str += " onmouseover=\"swapclass(\'" + text + "\', \'" + spname +
                    "\', \'" + urlname + "\', \'" + clname +
                    "\', \'" + oldname + "\', true)\">";
  }
  str += text + "</a>";
  display(spname, str); // update the code
 }

/////////////////////////////////////////////////////////////////////////////

function display(id, str) {
 with (document[id].document) {
  open();               // open document
  write(str);           // write to document
  close();              // close document
 }
} 
// -->
