
var formDateLabels = {date1:"The beginning date",date2:"The ending date"};

function isaPosNum( s ) 
{
    return ( parseInt( s ) > 0 );
}

function dateCheck( item, min, max )
{
    var pluginDate = item.name;
        
    if ( ! isaPosNum( item.value ) )
    { 
        alert( formDateLabels[pluginDate] + 
               " must be a positive number between" + 
               min + " and " + max );
        return false;
    }
    
    if ( parseInt( item.value ) < min )
    { 
        alert( formDateLabels[pluginDate] + 
               " must be greater than " + 
               min + " and less than " + 
               max + "\n\nPlease re-enter it" );
        return false;
    }
    
    if ( parseInt( item.value ) > max )
    { 
        alert( formDateLabels[pluginDate] + 
               " must be greater than " + 
               min + " and less than " + 
               max + "\n\nPlease re-enter it" );
        return false;
    }
    
    return true;
}

function validateAndSubmit( theform )
{
  var iflag = false;
  var cflag = false;

  for ( var i = 0; i < theform.elements.length; i++)
  {
      ele = theform.elements[i];
      
      if (ele.type == "checkbox")
      {
          if (ele.checked == true) {
		cflag = true;
	  }
      } else if (ele.type == "inputbox") {
	  if (ele.value != "") {
		iflag = true;
	  }
      }	         
  }
    
  if(iflag == false) {
        alert( "Please enter search terms!" );
        return false;
  }

  if(cflag == false) {
        alert( "Please select collections!" );
        return false;
  }
   
  return true;
}

// uncheckAllRecords.
// take a FORM object as an argument, and set all the checkbox objects
// in that form to not "checked", return false

function uncheckAllRecords( theform )
{
  var ele = "";

  for ( var i = 0; i < theform.elements.length; i++)
  {
      ele = theform.elements[i];
      
      if (ele.type == "checkbox" && ele.name == "c")
      {
          ele.checked = false;
      }
  }

  return false;
}

// checkAllRecords.
// take a FORM object as an argument, and set all the checkbox objects
// in that form to "checked", return false

function checkAllRecords( theform )
{
  var ele = "";

  for ( var i = 0; i < theform.elements.length; i++)
  {
      ele = theform.elements[i];
      
      if (ele.type == "checkbox" && ele.name == "c")
      {
          ele.checked = true;
      }
  }

  return false;
}

function checkByGroup( theform )
{
  var ele = "";

  for ( var i = 0; i < theform.elements.length; i++)
  {
      ele = theform.elements[i];

      if (ele.type == "checkbox" && ele.name != "online" ) 
      {
	 if (ele.getAttribute("className").indexOf(theform.gsel.value) >= 0 || theform.gsel.value == "All") {
           ele.checked = true;
     	 } else {
	   ele.checked = false;
	 }
      }
  }

  return false;
}

function checkCollSelection( theform ) {
  var iflag = false;       
 
  for ( var i = 0; i < theform.elements.length; i++)
  {  
      ele = theform.elements[i];
        
      if (ele.type == "text") {
          if (ele.value != "") {  
                iflag = true;
          }
      }
  }
 
  if (iflag == false) {
        alert( "Please enter search terms!" );
        return false;
  }

  if ( theform.c.value == "" ) {
	alert( "Please select collections!" );
        return false;
  }

  // "Select All" is selected
  if( theform.c.options[0].selected ) {  
  	theform.c.options[0].selected = false;
        for(var i=1; i<theform.c.options.length; i++)
        	theform.c.options[i].selected = true;
  }

  return true;
}



function checkQuery( theform )
{
  var iflag = false;
  var cflag = false;
  var q4 = "";
  var collcnt = 0;

  for ( var i = 0; i < theform.elements.length; i++)
  {
      ele = theform.elements[i];

      if (ele.name == "c")
      {
          if (ele.checked == true) {
	  	// at least a collection is selected
		collcnt++;
          }
      } else if (ele.type == "text") {
          if (ele.value != "") {
		// a search term has been entered
                iflag = true;
          }
      }
  }


  if (theform.q4 != null) {
	// advanced search

	// it's advanced search with collection selection
	cflag = true;

   	 // concatenating date selection
    	for (var i = 0; i < theform.qdate.length; i++) {
		if (theform.qdate.options[i].selected && q4.indexOf(theform.qdate.options[i].value) < 0) {
			q4 += theform.qdate.options[i].value + "+";
		}
  	}

	 if (q4.length > 0) {
		theform.q4.value = q4.substring(1, q4.length - 2) + "*";
  	 }

  //	alert(theform.q4.value);

  }

  // neither text search terms nor type and date are entered
  if(iflag == false && q4 == "") {
        alert( "Please enter search terms!" );
        return false;
  }

  if(cflag == true && collcnt == 0) {
 	alert( "Please select collections!" );
        return false;
  }

  return true;
}

 function checkSubmit(theform) {

   if (theform.creator.value == "") {
	alert( "Please enter your name!");
        return false;
   }

   if (theform.email.value == "") {
	alert( "Please enter your email!");
        return false;
   }
   if (theform.annotation.value == "") {
	alert( "Please enter annotation!");
        return false;
   }

   return true;
 }

 function trimws(strString)
 // Trims white space from beginning and ending of a string.
 // Copy from MSDN
 {
   var intBegin, intEnd;
   var strResult;
   var chrChar;
   var flg;

   intEnd = strString.length - 1;
   intBegin = 0;
   flg = true;
   chrChar = strString.charAt(intBegin);
   while ((intBegin < intEnd) && ((chrChar == "\n") || (chrChar == "\r") ||
                                  (chrChar == "\t") || (chrChar == " "))) {
     // Find first non-whitespace.
     chrChar = strString.charAt(++intBegin);
   }
   chrChar = strString.charAt(intEnd);
   while ((intEnd >= 0) && ((chrChar == "\n") || (chrChar == "\r") ||
                            (chrChar == "\t") || (chrChar == " "))) {
     // Find last non-whitespace.
     chrChar = strString.charAt(--intEnd);
   }
   if (intBegin < intEnd) {
     strResult = strString.substr(intBegin, intEnd - intBegin + 1);
   }
   else {
     strResult = "";
   }
   return(strResult);
 }

