
  /*

   Function to detect state of Edit Divs and toggle display

   */
   var div_states = new Array();
   function rruffDivInit() {
      var divs = document.getElementsByClassName('stretcher');
      for (i=0;i<divs.length;i++) {
         div_states[divs[i].id] = 0;
      }
   }

   function rruffDivBlinds() {
      var divs = document.getElementsByClassName('stretcher');
      for (i=0;i<divs.length;i++) {
         if(div_states[divs[i].id] == 0) {
            // new Effect.BlindUp(document.getElementById(divs[i].id));
            new Effect.SwitchOff(document.getElementById(divs[i].id));
         }
      }
   }

   function tdiv() {
      setTimeout("rruffToggleDiv();",'500');
   }

   var div_to_toggle;
   function rruffToggleDiv() {
      new Effect.BlindDown(div_to_toggle);
   }
      
   function rruffDivDisplay(div_id) {
      var divs = document.getElementsByClassName('stretcher');
      for (i=0;i<divs.length;i++) {
         if(div_states[divs[i].id] == 1 && divs[i].id != div_id) {
            div_states[divs[i].id] = 0; 
            // new Effect.BlindUp(document.getElementById(divs[i].id));
            new Effect.SwitchOff(document.getElementById(divs[i].id));
            // Roll Up Div
            // xmlFinishFunctions[0] = history_back;
         }
         else if(divs[i].id == div_id && div_states[div_id] == 0) {
            div_states[div_id] = 1; 
            // Check if contents of inner div exist
            var current_div = document.getElementById(div_id);
            if(current_div.innerHTML.match(/DIV_LOADED/)) {
               new Effect.BlindDown(current_div);
            }
            else {
               // Load contents if not exist
               // Expand Div via callback function
               // xmlFinishFunctions[0] = tdiv;
               // xmlFinishFunctions[0] = rruffToggleDiv;
               id = div_id.match(/(\d+)/);
               if(div_id.match(/child/)) {
                  url = baseurl+'/index.php/r=display_block/table=sample_child/unique_key_field=sample_child_id/unique_key='+id[0];
                  // div_to_toggle = current_div;
                  retrieveURL(url, div_id, 'GET','')
               }
            }
         }
      }
   }
  /*

   END Function to detect state of Edit Divs and toggle display

   */

   var srcElem;

   function insertAtCursor(myValue) {
      if(srcElem == 'deny') {
         alert("Special characters are NOT allowed in this field.  Please select a different field.");
      }
      else if(srcElem) {
                  //IE support
         if (document.selection && document.selection.createRange) {
            srcElem.focus();
            var range = srcElem.createTextRange();
            range.setEndPoint("EndToStart", document.selection.createRange());
            var startPos =  range.text.length;
            var endPos = startPos + document.selection.createRange().text.length;
                           srcElem.value = srcElem.value.substring(0, startPos)
                                          + myValue
                                          + srcElem.value.substring(endPos, srcElem.value.length);
                  }
                  //MOZILLA/NETSCAPE support
                  else if (srcElem.selectionStart || srcElem.selectionStart == '0') {
                           var startPos = srcElem.selectionStart;
   
                           var endPos = srcElem.selectionEnd;
                           srcElem.value = srcElem.value.substring(0, startPos)
                                          + myValue
                                          + srcElem.value.substring(endPos, srcElem.value.length);
                  } else {
                           srcElem.value += myValue;
                  }
      }
      else {
         alert("Cursor location not found:\n\n Please click where you want to place the HTML entity.\nThen use the HTML Entity dropdown to place the HTML code.");
      }
   }                  

   // function to re-initialize moo.fx 
   function restartEffects() {
        containerHeight = new fx.Height('container', {duration: 400});
   }

   var responseHandlerDiv;
   var responseHandlerUrl;
   var xmlFinishFunctions = new Array();
   function handleResponse(msg) {
      var obj = document.getElementById('file_upload_status_message');
      obj.innerHTML = '<span style="color: blue; padding-top: 5px; font-weight: bold;">' + msg + '</span>';
            // alert(responseHandlerDiv);
            // alert(responseHandlerUrl);
      
      xmlFinishFunctions[0] = history_back;
      retrieveURL(responseHandlerUrl, responseHandlerDiv, 'GET', '');
   }

   function history_back() {
      history.go(-1);
   }

   function delayed_redirect(url) {
      window.location = url;
   }

   function confirmAction() {
      if(confirm('Are you sure you want to delete this item?')) {
         return true;
      }
      else {
         return false;
      }
   }

   function reload() {
      window.location.href = window.location.href;
   }

   var displayThisBlock = '';
   function setDisplayVar(displayVar) {
      // alert(displayVar);
      //displayThisBlock = displayVar;
      //if(ScrollLinks) {
         // setTimeout('ScrollLinks.start()',750);
         // scroll start callback
         // scroll_elem_id = displayVar.replace(/child/,'child_edit_');
         // scrollStartCallback();
      //}

   }


   var scroll_elem_id;
   function scrollStartCallback() {
      var elem = document.getElementById(scroll_elem_id);
      if(elem.innerHTML.match(/BLOCK_LOADED/)) {
         ScrollLinks.start();
         return true;
      }
      else {
         setTimeout('scrollStartCallback()',500);
         return true;
      }
   }

   function clearRecordEditBlocks() {
      var editDivs = document.getElementsByClassName("sample_child_record_edit");
      for (i = 0; i < editDivs.length; i++){
         editDivs[i].innerHTML = '';
      }
   }

   //the main function, call to the effect object
/*
   function init(){
   
      var stretchers = document.getElementsByClassName('stretcher'); //div that stretches
      var toggles = document.getElementsByClassName('display'); //h3s where I click on

      //accordion effect
      myAccordion = new fx.Accordion(
         toggles, stretchers, {opacity: true, duration: 400}
      );

      //hash function
      
      function checkHash(){
         var found = false;
         toggles.each(function(h3, i){
            // Get Remote data Function
            if (window.location.href.indexOf(h3.title) > 0) {
               myAccordion.showThisHideOpen(stretchers[i]);
               found = true;
            }
         });
         return found;
      }
      
      if (!checkHash()) myAccordion.showThisHideOpen(stretchers[0]);
   }
*/

   // disableObject Nate Stone
   obj_states = new Array();
   function disableObject(obj) {
      var el = document.getElementById(obj);
      if(obj_states[obj] != 1) {
         obj_states[obj] = 1;
         el.disabled = true;
      }
      else {
         obj_states[obj] = 0;
         el.disabled = false;
      }
   }

   link_states = new Array();
   function changeLink(obj, item1, item2) {
      var el = document.getElementById(obj);
      if(link_states[obj] != 1) {
         link_states[obj] = 1;
         el.innerHTML = '<img src="' + item2 + '" border="0" >';
      }
      else {
         link_states[obj] = 0;
         el.innerHTML = '<img src="' + item1 + '" border="0" >';
      }
   }

   function switchMenu(obj) {
     var el = document.getElementById(obj);
     if ( el.style.display != 'none' ) {
       el.style.display = 'none';
     }
     else {
       el.style.display = '';
     }
   }

   /* function collapseAll(objs) {
     var i;
     for (i=0;i<objs.length;i++) {
       objs[i].style.display = 'none';
     }
   } */

   function $() {
      var elements = new Array();
      for (var i = 0; i < arguments.length; i++) {
         var element = arguments[i];
         if(element != "null") {
            if (typeof element == 'string')
               element = document.getElementById(element);
            if (arguments.length == 1)
               return element;
            elements.push(element);
         }
      }
      return elements;
   }
   
   function reset_button(frm) {
      for(i=0;i<frm.elements.length;i++) {
         if(frm.elements[i].type != "select-one" && frm.elements[i].type != "select" && frm.elements[i].type != "hidden" && frm.elements[i].type != "button" && frm.elements[i].type != "submit") {
            frm.elements[i].value = '';
         }
      }
      $('mineral_ids').value = '';
      $('single_mineral_search').style.display = 'block';
      $('multi_mineral_search').style.display = 'none';
   }

<!-- Floating DIV script -->

    var dragging = false;

    // Get the floating DIV object
    // depending on browser version
    function GetDragDivObject(divID){
        try {
            var fsidivobject = document.getElementById(divID);
            if (fsidivobject == undefined) {
                fsidivobject = (document.all)? document.all.divID : document.divID;
                if (fsidivobject == undefined) return undefined;
            }
        }
        catch (e){}

        return fsidivobject;
    }


    // Start dragging the floating DIV
    var dragObject;
    function StartDrag(divID){
        dragObject = divID;
        var fsidivobject = GetDragDivObject(divID);
        if (fsidivobject == undefined) return;

        dragstartX = fsidivobject.offsetLeft - MouseX;
        dragstartY = fsidivobject.offsetTop  - MouseY;

        dragging = true;
        // var divpos = document.getElementById('div_position');
        // divpos.innerHTML = 'xpos= '+dragstartX + ' ypos= ' + dragstartY;

        return true;
    }

    // Stop dragging
    function StopDrag(){
        dragging = false;
        dragObject = '';
    }

    function findPosX(obj)
    {
       var curleft = 0;
       if (obj.offsetParent)
       {
          while (obj.offsetParent)
          {
             curleft += obj.offsetLeft
             obj = obj.offsetParent;
          }
       }
       else if (obj.x)
          curleft += obj.x;
       return curleft;
    }
    
    function findPosY(obj)
    {
       var curtop = 0;
       if (obj.offsetParent)
       {
          while (obj.offsetParent)
          {
             curtop += obj.offsetTop
             obj = obj.offsetParent;
          }
       }
       else if (obj.y)
          curtop += obj.y;
       return curtop;
    }

    // Show the floating DIV
    var divPostfix = false;
    function ShowDiv(divID, divPostfix){
        setBrowser();
        var fsidivobject = GetDragDivObject(divID);
        if (fsidivobject == undefined) return;

        // Get and Position Div
        var divName = 'wrapper_' + divID;
        if(divPostfix) {
           divName = divName + '__' + divPostfix;
        }
        var imageObj = GetDragDivObject(divName);
        var newPos = getNewPos(imageObj);
        moveIdTo( divID, newPos['x'], newPos['y']);

        // Show Div
        fsidivobject.style.display = 'block';
        fsidivobject.style.visibility = 'visible';
    }

    function getNewPos(imageObj) {

         var screenInfo = getScreenData();
         /* 
         alert('ScreenInfo\n' +
               'iX=' + screenInfo['iX'] + '\n' +
               'iY=' + screenInfo['iY'] + '\n' +
               'oX=' + screenInfo['oX'] + '\n' +
               'oY=' + screenInfo['oY'] + '\n' +
               'tX=' + screenInfo['tX'] + '\n' +
               'tY=' + screenInfo['tY'] + '\n'); 
         */

         var pos = new Array();
         pos['x'] = 150 + screenInfo['oX'];
         pos['y'] = 150 + screenInfo['oY'];
         return pos;
    }

   function getScreenData() {

      var screenInfo = new Array;
      // Inner WIDTH
      var x,y;
      if (self.innerHeight) // all except Explorer
      {
         x = self.innerWidth;
         y = self.innerHeight;
      }
      else if (document.documentElement && document.documentElement.clientHeight)
         // Explorer 6 Strict Mode
      {
         x = document.documentElement.clientWidth;
         y = document.documentElement.clientHeight;
      }
      else if (document.body) // other Explorers
      {
         x = document.body.clientWidth;
         y = document.body.clientHeight;
      }

      screenInfo['iX'] = x;
      screenInfo['iY'] = y;



      // Scrolling OFFSET
      
      var x,y;
      if (self.pageYOffset) // all except Explorer
      {
         x = self.pageXOffset;
         y = self.pageYOffset;
      }
      else if (document.documentElement && document.documentElement.scrollTop)
         // Explorer 6 Strict
      {
         x = document.documentElement.scrollLeft;
         y = document.documentElement.scrollTop;
      }
      else if (document.body) // all other Explorers
      {
         x = document.body.scrollLeft;
         y = document.body.scrollTop;
      }

      screenInfo['oX'] = x;
      screenInfo['oY'] = y;

      // Page HEIGHT
      var x,y;
      var test1 = document.body.scrollHeight;
      var test2 = document.body.offsetHeight
      if (test1 > test2) // all but Explorer Mac
      {
         x = document.body.scrollWidth;
         y = document.body.scrollHeight;
      }
      else // Explorer Mac;
         //would also work in Explorer 6 Strict, Mozilla and Safari
      {
         x = document.body.offsetWidth;
         y = document.body.offsetHeight;
      }

      screenInfo['tX'] = x;
      screenInfo['tY'] = y;

      return screenInfo;
    }

    // Track cursor position and move
    // the floating DIV if dragging
    function MouseMove(evt){
        if (!document.all){
            MouseX = Math.max(50, evt.pageX);
            MouseY = evt.pageY;
        }
        else {
            MouseX = Math.max(50,event.x);
            MouseY = event.y;
        }

        if (!dragging) return;

        mouse_pos_x = MouseX + dragstartX;
        mouse_pos_y = MouseY + dragstartY;
        moveIdTo( dragObject, mouse_pos_x, mouse_pos_y );

        // var divpos = document.getElementById('div_position');
        // divpos.innerHTML = 'xpos= '+ mouse_pos_x + ' ypos= ' + mouse_pos_y;

        return true;
    }

    //Track mouseDown events and hide / close visible popups
    function MouseDown(divID){

        // Hide floating DIV if visible
        var fsidivobject = GetDragDivObject(divID);
        if (dragging || fsidivobject == undefined) return;

        if (fsidivobject.style.visibility != 'hidden') fsidivobject.style.visibility = 'hidden';
    }


    // Track mouse clicks and cursor position
    var Event;
    // if (!document.all) {
        // captureEvents(Event.MOUSEMOVE);
        // captureEvents(Event.MOUSEDOWN);
    // }
    document.onmousemove = MouseMove;
    document.onmousedown = MouseDown;

<!-- End of floating DIV script -->

/*
   var accordion_element;
   function toggleAccordion() {
      myAccordion.showThisHideOpen(accordion_element);
   }
   

   function getH3Data (stretcher_element) {
      // Check if content it present
      // myAccordion.showThisHideOpen(stretcher_element);
      // retrieve content
      the_div_title = stretcher_element.id;
      xmlFinishFunctions[0] = toggleAccordion;
      id = the_div_title.match(/(\d+)/);
      if(the_div_title.match(/child/)) {
         the_div_title = the_div_title.replace(/edit/,'stretcher');
         url = baseurl+'/index.php/r=display_block/table=sample_child/unique_key_field=sample_child_id/unique_key='+id[0];
         contentDiv = document.getElementById(the_div_title);
         retrieveURL(url, the_div_title,'GET','')
      }
      else {
         // contentDiv = document.getElementById(the_div_title);
alert(the_div_title);
         contentDiv = document.getElementById(the_div_title);
         contentDiv.style.border = "1px solid #999999";
         myAccordion.showThisHideOpen(accordion_element);
      }
   }

*/
   // window.onload=show;
   // function show(id,pre) {
   function p_info(id,setting) {
      var d = document.getElementById(id);
      if (d) {
         d.style.display='none';
         if(setting = 'show') {
            d.style.display='block';
         }
         else {
         }
      }
   }

   // Random Password Generator - using for random image keys
   // The JavaScript Source!! http://javascript.internet.com
   function getRandomNum(lbound, ubound) {
      return (Math.floor(Math.random() * (ubound - lbound)) + lbound);
   }
   function getRandomChar(number, lower, upper, other, extra) {
      var numberChars = "0123456789";
      var lowerChars = "abcdefghijklmnopqrstuvwxyz";
      var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      var otherChars = "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/? ";
      var charSet = '';
      if (number == true)
         charSet += numberChars;
      if (lower == true)
         charSet += lowerChars;
      if (upper == true)
         charSet += upperChars;
      if (other == true)
         charSet += otherChars;
      return charSet.charAt(getRandomNum(0, charSet.length));
   }
   function getPassword(length, extraChars, firstNumber, firstLower, firstUpper, firstOther) {
      var rc = "";
      if (length > 0)
         rc = rc + getRandomChar(firstNumber, firstLower, firstUpper, firstOther, extraChars);
      for (var idx = 1; idx < length; ++idx) {
         rc = rc + getRandomChar(firstNumber, firstLower, firstUpper, firstOther, extraChars);
      }
      return rc;
   }
   // End -->

   function imageDisplay(theURL,winName,features) { //v2.0
      var random_string = getPassword('20','0','1','1','1','0');
      theURL += '/random_string=' + random_string;
      window.open(theURL,winName,features);
   }

   function MM_openBrWindow(theURL,winName,features) { //v2.0
      window.open(theURL,winName,features);
   }

   var append = false;
   function retrieveURL(url, objID, requestType, postData, append) {
      // alert (url + '\n' + objID);
      var req=false;
      var xmlReq = null;
      /*@cc_on @*/
      /*@if (@_jscript_version >= 5)
        try {
           req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
        try {
           req = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
        req = false;
        }
     }
     @end @*/
  
     if (!req && typeof XMLHttpRequest != 'undefined') {
       req = new XMLHttpRequest();
     }
  
     var obj = document.getElementById(objID);
     if(requestType == "GET") {
        req.open("GET", url);
     } 
     else {
        req.open("POST", url, true);
     }
     req.onreadystatechange = function() {
        if (req.readyState == 4 && (req.status == 100 || req.status == 200)) {
           if(append) {
              obj.innerHTML = obj.innerHTML + req.responseText;
           }
           else {
              obj.innerHTML = req.responseText;
              // obj.style.border = "1px solid #999999";
           }
           if(xmlFinishFunctions.length > 0) {
              for(i=0;i<xmlFinishFunctions.length;i++) {
                 xmlFinishFunctions[i]();
              }
              xmlFinishFunctions = new Array();
           }
        }
     }
     if(requestType == "GET") {
        req.send(null);
     }
     else {
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.send(postData);
     }
   }       


   function sendForm ( formID, formurl, objID )
   {
      var query = "";
      if(form = document.getElementById( formID )) {
         query = '/' + processFormData(form,'/');
      }
      // var elements = form.elements;
      // var query = '/';
      // for ( i = 0; i < elements.length-1; i++ )
      // {
      //     query = query + elements.item(i).name + '=' + elements.item(i).value + '/';
      // }
      // query = query + elements.item(i).name + '=' + elements.item(i).value;
      formurl = formurl + query;
      // alert(formurl);
      retrieveURL(formurl,objID,'GET', '');
      return true;
   }

   function postForm ( formID, formurl, objID )
   {
      var fields = new Array()
      var post;
// alert(formID + "\n" + formurl + "\n" + objID);
      var form = document.getElementById( formID );
      post = processFormData(form, '&');
 // alert(post);
      retrieveURL(formurl,objID,'POST',post);
      return true;
   }
   
   function postFormNoReturn ( formID, formurl, objID )
   {
      var fields = new Array()
      var post;
// alert(formID + "\n" + formurl + "\n" + objID);
      var form = document.getElementById( formID );
      post = processFormData(form, '&');
 // alert(post);
      retrieveURL(formurl,objID,'POST',post);
   }
   

   // keypress event handler
   // http://users.fmg.uva.nl/rgrasman/jscript/2005/07/capturing-escape-esc-key-in-javascript.html
   // modified by Nate Stone 20060213
   var edit_mode = false;
   document.onkeyup = function (e) {
      var kC  = (window.event) ?    // MSIE or Firefox?
                 event.keyCode : e.keyCode; 
      var Esc = (window.event) ?    
                27 : e.DOM_VK_ESCAPE // MSIE : Firefox
      if(kC==Esc) {
         StopDrag();
      }

      if(kC == '69') {
         edit_mode = false;
      }

   }

   document.onkeydown = function (e) {
      var kC  = (window.event) ?    // MSIE or Firefox?
                 event.keyCode : e.keyCode; 

      if(kC == '69') {
         edit_mode = true;
      }
   }

   /* var click_modifier = '';
   document.onclick = function (evt) {
      if(!evt) {
         r += event.ctrlKey ? 'Ctrl-' : '';
         r += event.altKey ? 'Alt-' : '';
         r += event.shiftKey ? 'Shift-' : '';
      }
      else {
         r += evt.ctrlKey ? 'Ctrl-' : '';
         r += evt.altKey ? 'Alt-' : '';
         r += evt.shiftKey ? 'Shift-' : '';
      }
      click_modifier = r;
   } */



   // Update Form Status
   // Check for changed form variables
   function formValueChanged(formID, statusID, formKey) {
      var form = document.getElementById( formID );
      var formValues = processFormData(form, '&');
      var keyValuePairs = formValues.split('&');
      var historical_keys = new Array();
      var historical_values = new Array();
      var field_keys = new Array();
      var field_values = new Array();

      var f_count = 0;
      var h_count = 0;
      for(i=0;i<keyValuePairs.length;i++) {
         var field_data = keyValuePairs[i].split('=');
         if(field_data[0].match(/^historical__/)) {
            // historical value
            historical_keys[h_count] = field_data[0];
            historical_values[h_count] = field_data[1];
            h_count++;
         }
         if(field_data[0].match(/^field__/)) {
            // field value
            field_keys[f_count] = field_data[0];
            field_values[f_count] = field_data[1];
            f_count++;
         }
      }
      var statusFlag = false;
      var status_m = document.getElementById(statusID);
      for(i=0;i<field_keys.length;i++) {
         var field_data = field_keys[i].split('__');
         var hKey = 'historical__' + field_data[1];
         // Get index of historical field
         for(j=0;j<historical_keys.length;j++) {
            if(historical_keys[j] == hKey) { 
               var index = j;
            } 
         }

         if(field_values[i] == historical_values[index]) {
            // Check class set to normal if 'changed_value'
            var item = document.getElementById(field_keys[i] + '__' + formKey);
            if(item) {
               if(item.type != "hidden") {
                  item.style.color = "#000000";
                  item.style.border = "1px solid #999999";
               }
            }
         }
         else {
            // Set class to 'changed_value'
            var item = document.getElementById(field_keys[i] + '__' + formKey);
            if(item) {
               if(item.type != "hidden") {
                  item.style.color = "#6666ff";
                  item.style.border = "1px solid #6666ff";
               }
               statusFlag = true;
            }
         }
      }
      if(statusFlag) {
         status_m.innerHTML = 'This form has unsaved changes.';
         status_m.style.border = '1px solid red';
      }
      else {
         status_m.innerHTML = '&nbsp;&nbsp;';
         status_m.style.border = '1px solid white';
      }
   }

   /*
    * Copyright 2005 Matthew Eernisse (mde@fleegix.org)
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    * 
    *   http://www.apache.org/licenses/LICENSE-2.0
    * 
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    *
    * Original code by Matthew Eernisse (mde@fleegix.org)
    * Additional bugfixes by Mark Pruett (mark.pruett@comcast.net)
    *
   */
   
   // The var docForm should be a reference to a <form>
   
   function processFormData(docForm, delimiter) {
     var submitContent = '';
     var formElem;
     var lastElemName = '';
     
     for (i = 0; i < docForm.elements.length; i++) {
       formElem = docForm.elements[i];
       switch (formElem.type) {
         // Text fields, hidden form elements
         case 'text':
         case 'hidden':
         case 'password':
         case 'textarea':
         case 'select-one':
           submitContent += formElem.name + '=' + encodeURIComponent(formElem.value) + delimiter 
           break;
           
         // Radio buttons
         case 'radio':
           if (formElem.checked) {
             submitContent += formElem.name + '=' + escape(formElem.value) +  delimiter
           }
           break;
           
         // Checkboxes
         case 'checkbox':
           if (formElem.checked) {
             // Continuing multiple, same-name checkboxes
             if (formElem.name == lastElemName) {
               // Strip of end ampersand if there is one
               if (submitContent.lastIndexOf(delimiter) == submitContent.length-1) {
                 submitContent = submitContent.substr(0, submitContent.length - 1);
               }
               // Append value as comma-delimited string
               submitContent += ',' + escape(formElem.value);
             }
             else {
               submitContent += formElem.name + '=' + escape(formElem.value);
             }
             submitContent += '&';
             lastElemName = formElem.name;
           }
           break;
           
       }
     }
     // Remove trailing separator
     submitContent = submitContent.substr(0, submitContent.length - 1);
     return submitContent;
   }

   function pleaseWait( objID, message ) 
   {
     var obj = document.getElementById(objID);
     obj.innerHTML = '<span style="color: blue; padding-top: 5px; font-weight: bold;">' + message + '</span>';
     return true;
   }

   function changeDiv( objID, message ) 
   {
     // alert(objID + "\n" + message);
     var obj = document.getElementById(objID);
     obj.innerHTML = message;
     return true;
   }

   // function hidediv(element) {  
         // var obj = document.getElementById(element);
         // obj.innerHTML = '';
   // }
   function hidediv() { 
      if (document.getElementById) { // DOM3 = IE5, NS6 
         document.getElementById('element_chooser').style.visibility = 'hidden'; 
         // document.getElementById('element_chooser_holder').style.visibility = 'hidden'; 
      } else { 
         if (document.layers) { // Netscape 4 
            document.element_chooser.visibility = 'hidden';
            // document.element_chooser_holder.visibility = 'hidden'; 
         } else { // IE 4 
            document.all.element_chooser.style.visibility = 'hidden';
            // document.all.element_chooser_holder.style.visibility = 'hidden';
         } 
      } 
   } 

   function showdiv(element) {  
      if (document.getElementById) { // DOM3 = IE5, NS6 
         document.getElementById(element).style.visibility = 'visible';
         // document.getElementById(element).style.visibility = 'visible'; 
      } else {  
         if (document.layers) { // Netscape 4  
            document.element.visibility = 'visible'; 
            // document.element.visibility = 'visible'; 
         } else { // IE 4  
            document.all.element.visibility = 'visible'; 
            // document.all.element.style.visibility = 'visible'; 
         }
      }
   }                                                  

var isNav4, isNav6, isIE4;

/*
 * Browser version snooper; determines your browser
 * (Navigator 4, Navigator 6, or Internet Explorer 4/5)
 */
function setBrowser()
{
    if (navigator.appVersion.charAt(0) == "4")
    {
        if (navigator.appName.indexOf("Explorer") >= 0)
        {
            isIE4 = true;
        }
        else
        {
            isNav4 = true;
        }
    }
    else if (navigator.appVersion.charAt(0) > "4")
    {
        isNav6 = true;
    }
}

function setBrowserRRUFF()
{
    if (navigator.appVersion.charAt(0) == "4")
    {
        if (navigator.appName.indexOf("Explorer") >= 0)
        {
            return 'IE4';
        }
        else
        {
            return 'Nav4';
        }
    }
    else if (navigator.appVersion.charAt(0) > "4")
    {
        if (navigator.appName.indexOf("Explorer") >= 0)
        {
            return 'IE';
        }
        else
        {
            return 'Nav6';
        }
    }
    else {
       return 'unknown';
    }
}


/*
 *
 * Given a selector string, return a style object
 * by searching through stylesheets. Return null if
 * none found
 *
 */
function getStyleBySelector( selector )
{
    if (!isNav6)
    {
        return null;
    }
    var sheetList = document.styleSheets;
    var ruleList;
    var i, j;

    /* look through stylesheets in reverse order that
       they appear in the document */
    for (i=sheetList.length-1; i >= 0; i--)
    {
        ruleList = sheetList[i].cssRules;
        for (j=0; j<ruleList.length; j++)
        {
            if (ruleList[j].type == CSSRule.STYLE_RULE &&
                ruleList[j].selectorText == selector)
            {
                return ruleList[j].style;
            }   
        }
    }
    return null;
}

/*
 *
 * Given an id and a property (as strings), return
 * the given property of that id.  Navigator 6 will
 * first look for the property in a tag; if not found,
 * it will look through the stylesheet.
 *
 * Note: do not precede the id with a # -- it will be
 * appended when searching the stylesheets
 *
 */
function getIdProperty( id, property )
{
    if (isNav6)
    {
        var styleObject = document.getElementById( id );
        if (styleObject != null)
        {
            styleObject = styleObject.style;
            if (styleObject[property])
            {
                return styleObject[ property ];
            }
        }
        styleObject = getStyleBySelector( "#" + id );
        return (styleObject != null) ?
            styleObject[property] :
            null;
    }
    else if (isNav4)
    {
        return document[id][property];
    }
    else
    {
        return document.all[id].style[property];
    }
}

/*
 *
 * Given an id and a property (as strings), set
 * the given property of that id to the value provided.
 *
 * The property is set directly on the tag, not in the
 * stylesheet.
 *
 */
function setIdProperty( id, property, value )
{
    if (isNav6)
    {
        var styleObject = document.getElementById( id );
        if (styleObject != null)
        {
            styleObject = styleObject.style;
            styleObject[ property ] = value;
        }
        
        /*
      styleObject = getStyleBySelector( "#" + id );
        if (styleObject != null)
        {
            styleObject[property] = value;
        }
      */
    }
    else if (isNav4)
    {
        document[id][property] = value;
    }
    else if (isIE4)
    {
         document.all[id].style[property] = value;
    }
}

/*
 *
 * Move a given id.  If additive is true,
 * then move it by xValue dots horizontally and
 * yValue units vertically.  If additive is
 * false, then move it to (xValue, yValue)
 *
 * Note: do not precede the id with a # -- it will be
 * appended when searching the stylesheets
 *
 * Note also: length units are preserved in Navigator 6
 * and Internet Explorer. That is, if left is 2cm and
 * top is 3cm, and you move to (4, 5), the left will
 * become 4cm and the top 5cm.
 *
 */
function generic_move( id, xValue, yValue, additive )
{
    var left = getIdProperty(id, "left");
    var top = getIdProperty(id, "top");
    var leftMatch, topMatch;

    if (isNav4)
    {
        leftMatch = new Array( 0, left, "");
        topMatch = new Array( 0, top, "");
    }
    else if (isNav6 || isIE4 )
    {
        var splitexp = /([-0-9.]+)(\w+)/;
        leftMatch = splitexp.exec( left );
        topMatch = splitexp.exec( top );
        if (leftMatch == null || topMatch == null)
        {
            leftMatch = new Array(0, 0, "px");
            topMatch = new Array(0, 0, "px");
        }
    }
    left = ((additive) ? parseFloat( leftMatch[1] ) : 0) + xValue;
    top = ((additive) ? parseFloat( topMatch[1] ) : 0) + yValue;
    setIdProperty( id, "left", left + leftMatch[2] );
    setIdProperty( id, "top", top + topMatch[2] );
}

/*
 *
 * Move a given id to position (xValue, yValue)
 *
 */
function moveIdTo( id, x, y )
{
    generic_move( id, x, y, false );
}

/*
 *
 * Move a given id to (currentX + xValue, currentY + yValue)
 *
 */
function moveIdBy( id, x, y)
{
    generic_move( id, x, y, true );
}

/*
 *
 * Function used when converting rgb format colors
 * from Navigator 6 to a hex format
 *
 */ 
function hex( n )
{
    var hexdigits = "0123456789abcdef";
    return ( hexdigits.charAt(n >> 4) + hexdigits.charAt(n & 0x0f) );
}

/*
 *
 * Retrieve background color for a given id.
 * The value returned will be in hex format (#rrggbb)
 *
 */ 
function getBackgroundColor( id )
{
    var color;

    if (isNav4)
    {
        color = document[id].bgColor;
    }
    else if (isNav6)
    {
        var parseExp = /rgb.(\d+),(\d+),(\d+)./;
        var rgbvals;
        color = getIdProperty( id, "backgroundColor" );
        if (color)
        {
            rgbvals = parseExp.exec( color );
            if (rgbvals)
            {
                color = "#" + hex( rgbvals[1] ) + hex( rgbvals[2] ) +
                    hex( rgbvals[3] );
            }
        }
        return color;
    }
    else if (isIE4)
    {
        return document.all[id].backgroundColor;
    }
    return "";
}

/*
 *
 * Return a division's document
 * 
 */
function getDocument( divName )
{
    var doc;

    if (isNav4)
    {
        doc = window.document[divName].document;
    }
    else if (isNav6)
    {
        doc = document;
    }
    else if (isIE4)
    {
        doc = document;
    }
    return doc;
}

function inspectStyle(elm){
  if (elm.style){
    var str = "";
    for (var i in elm.style){
     str += i + ": " + elm.style[i] + "\n";
   }
   alert(str);
  }
  else {
      alert("style checker fail");
   }
}


   function checkFormElements(theClassName) {
      var theFormName = 'frm_sample_search';
      if(theClassName) { 
         theFormName = 'form_' + theClassName;
      }
      else {
         theClassName = 'periodic_table';
      }
      var theForm = document.getElementById(theFormName);
      var elements = theForm.txt_chemistry_incl.value.split(',');
      if(elements.length > 0 && elements[0] != "") {
         for(i=0;i<elements.length;i++) {
            var element = document.getElementById(theClassName + '_' + elements[i]);
            element.style.border = '1px solid rgb(0, 0, 255)';
            element.style.fontWeight = "bold";
            element.style.color = "#00f";
         }
      }

      var elements = theForm.txt_chemistry_excl.value.split(',');
      if(elements.length > 0 && elements[0] != "") {
         for(i=0;i<elements.length;i++) {
            var element = document.getElementById(theClassName + '_' + elements[i]);
            element.style.border = '1px solid #f00';
            element.style.fontWeight = "bold";
            element.style.color = "#f00";
         }
      }
   }


   // ADD LISTNER FOR PT DIV CLICKS
   function eventAddElement(e) {
      addElement(this, this.className);
   }

   function eventGenericAddElement(e) {
      genericAddElement(this, this.className);
   }


   function initPeriodicTable(pt_mode,pt_class_name) {
      if(pt_class_name) {
         var pt_divs = document.getElementsByClassName(pt_class_name);
      }
      else {
         var pt_divs = document.getElementsByClassName("periodic_table");
      }
   
      for(i=0;i<pt_divs.length;i++) {
         if(pt_divs[i].addEventListener) {
            if(pt_mode == "searchChem") {
               pt_divs[i].addEventListener('click',  eventAddElement, true );
            }
            else {
               pt_divs[i].addEventListener('click', eventGenericAddElement, true );
            }
            
            pt_divs[i].onselectstart = new Function ('return false;');
            pt_divs[i].onmousedown = new Function ('return false;');
            pt_divs[i].onmouseup = new Function ('return false;');
         }
         else {
            /* if(pt_mode == "searchChem") {
               pt_divs[i].attachEvent('onclick', eventAddElement(e));
            }
            else {
               pt_divs[i].attachEvent('onclick', eventGenericAddElement(e));
            } */

            if(pt_mode == "searchChem") {
               pt_divs[i].attachEvent('onclick', function (e) { addElement(e.srcElement.id, e.srcElement.className); } );
            }
            else {
               pt_divs[i].attachEvent('onclick', function (e) { genericAddElement(e.srcElement.id,e.srcElement.className); } );
            }
            pt_divs[i].unselectable = 'on';
            pt_divs[i].onselectstart = new Function ('return false;');
            pt_divs[i].onmousedown = new Function ('return false;');
            pt_divs[i].onmouseup = new Function ('return false;');
         }
      }
   }

   function clearElements(theClass, theFormName) {
      var theForm = document.getElementById(theFormName);

      // Get and clear include elements
      if(theForm.txt_chemistry_incl.value != "") {
         var theElements = theForm.txt_chemistry_incl.value.split(',');
         for(var i = 0; i<theElements.length; i++) {
            // Set style to clear
            var elemTag = theElements[i].replace(/\s/g);
            elementName = theClass + "_" + elemTag;
            var element = document.getElementById(elementName);
            element.style.border = '1px solid rgb(187, 187, 187)';
            element.style.fontWeight = "normal";
            element.style.color = "#333";
         }
         // Clear form box
         theForm.txt_chemistry_incl.value = '';
      }
      // Get and clear exclude elements
      if(theForm.txt_chemistry_excl.value != "") {
         var theElements = theForm.txt_chemistry_excl.value.split(',');
         for(var i = 0; i<theElements.length; i++) {
            // Set style to clear
            var elemTag = theElements[i].replace(/\s/g);
            elementName = theClass + "_" + elemTag;
            var element = document.getElementById(elementName);
            element.style.border = '1px solid rgb(187, 187, 187)';
            element.style.fontWeight = "normal";
            element.style.color = "#333";
         }
         // Clear form box
         theForm.txt_chemistry_excl.value = '';
      }

   }

   function genericAddElement(element,theClass) {
      var theFormName = 'form_' + theClass;
      var theForm = document.getElementById(theFormName);
      if(!element.style) {
         element = document.getElementById(element);
      }
      var element_abbr = element.id;
      element_abbr = element_abbr.replace(theClass + '_','');
      if(element_abbr == 'clear') {
         clearElements(theClass, theFormName);
      }
      else if(element.style.border.match(/rgb\(187, 187, 187\)/) || element.style.border.match(/rgb\(187,187,187\)/) || element.style.border.match(/#bbb/) || element.style.cssText.match(/border-left-color\:\s+rgb\(187,\s187,\s187\)/)) {
         //le element is unselected
         element.style.border = '1px solid rgb(0, 0, 255)';
         element.style.fontWeight = "bold";
         element.style.color = "#00f";
         // add to form
         
         if(theForm.txt_chemistry_incl.value == "" && element_abbr != 'all') {
            theForm.txt_chemistry_incl.value = element_abbr;
         }
         else if(element_abbr == 'all') {
            if(theForm.txt_chemistry_excl.value == "") {
               theForm.txt_chemistry_excl.value = element_abbr;
            }
            else if(!theForm.txt_chemistry_excl.value.match(/all/)) {
               theForm.txt_chemistry_excl.value += "," + element_abbr;
            }
            element.style.border = '1px solid #f00';
            element.style.fontWeight = "bold";
            element.style.color = "#f00";
         }
         else {
            theForm.txt_chemistry_incl.value += "," + element_abbr;
         }
            
      }
      else if(element.style.border.match(/rgb\(255,\s0,\s0\)/) || element.style.border.match(/rgb\(255,\s0,\s0\)/) || element.style.border.match(/#f00/) || element.style.cssText.match(/border-left-color\:\s+rgb\(255,\s0,\s0\)/)) {
         // element is deselected
         element.style.border = '1px solid rgb(187, 187, 187)';
         element.style.fontWeight = "normal";
         element.style.color = "#333";

         // remove from form
         var element_abbr = element.id;
         element_abbr = element_abbr.replace(theClass + '_','');

         var elements = theForm.txt_chemistry_excl.value.split(',');
         var elements_out = '';
         for(i=0;i<elements.length;i++) {
            if(elements[i] != element_abbr) {
               elements_out += elements[i] + ",";
            }
         }
         elements_out = elements_out.substr(0,(elements_out.length - 1));
         theForm.txt_chemistry_excl.value = elements_out;
            
      }
      else if(element.style.border.match(/rgb\(0,\s0,\s255\)/) || element.style.border.match(/rgb\(0,0,255\)/) || element.style.border.match(/#00f/) || element.style.cssText.match(/border-left-color\:\s+rgb\(0,\s0,\s255\)/)) {
         // element is selected move to deselected
         element.style.border = '1px solid #f00';
         element.style.fontWeight = "bold";
         element.style.color = "#f00";

         var element_abbr = element.id;
         element_abbr = element_abbr.replace(theClass + '_','');
         // remove from incl table 
         var elements = theForm.txt_chemistry_incl.value.split(',');
         var elements_out = '';
         for(i=0;i<elements.length;i++) {
            if(elements[i] != element_abbr) {
               elements_out += elements[i] + ",";
            }
         }
         elements_out = elements_out.substr(0,(elements_out.length - 1));
         theForm.txt_chemistry_incl.value = elements_out;
            

         // move element to deselected - exclude
         if(theForm.txt_chemistry_excl.value == "") {
            theForm.txt_chemistry_excl.value = element_abbr;
         }
         else {
            theForm.txt_chemistry_excl.value += "," + element_abbr;
         }
            
      }
      else {
         // debug only
         // alert(element.style.border);
      }

      // Run Element Process
      if(processElements) {
         processElements(theForm.id, theForm.txt_chemistry_incl.value, theForm.txt_chemistry_excl.value);
      }
   }
  

   /*   RRUFF 2.0 Tag Management System   */
   var clearElement;

   function addElement(element) {
      if(!theClass) {
         var theClass = 'periodic_table';
      }
      if(!element.style) {
         element = document.getElementById(element);
      }
      var element_abbr = element.id;
      element_abbr = element_abbr.replace(theClass + '_','');
      if(element_abbr == 'clear') {
         clearElements(theClass, 'frm_sample_search');
      }
      else if(element.style.border.match(/rgb\(187, 187, 187\)/) || element.style.border.match(/rgb\(187,187,187\)/) || element.style.border.match(/#bbb/) || element.style.cssText.match(/border-left-color\:\s+rgb\(187,\s187,\s187\)/)) {
         //le element is unselected
         element.style.border = '1px solid rgb(0, 0, 255)';
         element.style.fontWeight = "bold";
         element.style.color = "#00f";
         // add to form
         
         if(document.frm_sample_search.txt_chemistry_incl.value == "" && element_abbr != 'all') {
            document.frm_sample_search.txt_chemistry_incl.value = element_abbr;
         }
         else if(element_abbr == 'all') {
            if(document.frm_sample_search.txt_chemistry_excl.value == "") {
               document.frm_sample_search.txt_chemistry_excl.value = element_abbr;
            }
            else if(!document.frm_sample_search.txt_chemistry_excl.value.match(/all/)) {
               document.frm_sample_search.txt_chemistry_excl.value += "," + element_abbr;
            }
            element.style.border = '1px solid #f00';
            element.style.fontWeight = "bold";
            element.style.color = "#f00";
         }
         else {
            document.frm_sample_search.txt_chemistry_incl.value += "," + element_abbr;
         }
            
      }
      else if(element.style.border.match(/rgb\(255,\s0,\s0\)/) || element.style.border.match(/rgb\(255,\s0,\s0\)/) || element.style.border.match(/#f00/) || element.style.cssText.match(/border-left-color\:\s+rgb\(255,\s0,\s0\)/)) {
         // element is deselected
         element.style.border = '1px solid rgb(187, 187, 187)';
         element.style.fontWeight = "normal";
         element.style.color = "#333";

         // remove from form
         var element_abbr = element.id;
         element_abbr = element_abbr.replace(theClass + '_','');

         var elements = document.frm_sample_search.txt_chemistry_excl.value.split(',');
         var elements_out = '';
         for(i=0;i<elements.length;i++) {
            if(elements[i] != element_abbr) {
               elements_out += elements[i] + ",";
            }
         }
         elements_out = elements_out.substr(0,(elements_out.length - 1));
         document.frm_sample_search.txt_chemistry_excl.value = elements_out;
            
      }
      else if(element.style.border.match(/rgb\(0,\s0,\s255\)/) || element.style.border.match(/rgb\(0,0,255\)/) || element.style.border.match(/#00f/) || element.style.cssText.match(/border-left-color\:\s+rgb\(0,\s0,\s255\)/)) {
         // element is selected move to deselected
         element.style.border = '1px solid #f00';
         element.style.fontWeight = "bold";
         element.style.color = "#f00";

         var element_abbr = element.id;
         element_abbr = element_abbr.replace(theClass + '_','');
         // remove from incl table 
         var elements = document.frm_sample_search.txt_chemistry_incl.value.split(',');
         var elements_out = '';
         for(i=0;i<elements.length;i++) {
            if(elements[i] != element_abbr) {
               elements_out += elements[i] + ",";
            }
         }
         elements_out = elements_out.substr(0,(elements_out.length - 1));
         document.frm_sample_search.txt_chemistry_incl.value = elements_out;
            

         // move element to deselected - exclude
         if(document.frm_sample_search.txt_chemistry_excl.value == "") {
            document.frm_sample_search.txt_chemistry_excl.value = element_abbr;
         }
         else {
            document.frm_sample_search.txt_chemistry_excl.value += "," + element_abbr;
         }
            
      }
      else {
         // debug only
/*
         var style_info = '';
         for(var key in element.style) {
            style_info += key + ' => ' + element.style[key] + '\n';
         }
         
         var div_debug = document.getElementById('debug');
         div_debug.innerHTML = '<pre>No style (' + element.style.getPropertyValue('border') + ')\n' + style_info + '</pre>)';
*/
      }
   }
  

   /*   RRUFF 2.0 Tag Management System   */
   var clearElement;
   var clearMessage;
   function clearElementInner() {
      clearElement.innerHTML = clearMessage;
   }

   function checkTagStatus() {
      tag_status = document.getElementById('hidden_tag_status');
      if(tag_status.innerHTML != '') {
         processTagDelete();
      }
      else {
         setTimeout("checkTagStatus();","250");
      }
   }
      
   function processTagDelete() {
      tag_status = document.getElementById('hidden_tag_status');
      num_records = tag_status.innerHTML;
      if(num_records > 0) {
         answer = confirm(num_records + ' mineral(s) are associated with this tag.\n\n Are you sure you wish to delete the tag and associations?');
      }
      else {
         answer = confirm('No minerals are associated with this tag.\n\n Are you sure you wish to delete the tag?');
      }
      tag_status.innerHTML = '';
      if(answer) {
         // delete tag and associations
         retrieveURL(baseurl + '/index.php?r=edit_tag&tag_type=mineral&tbl_data_tags_id='+working_tag_id+'&mineral_id='+working_mineral_id+'&mode=delete','tag_wrapper__'+working_tag_id, 'GET');
         working_tag_id = '';
         working_tag_type = '';
         working_mineral_id = '';

      }
      else {
         // return to non edit mode
         retrieveURL(baseurl + '/index.php?r=edit_tag&tag_type=mineral&tbl_data_tags_id='+working_tag_id+'&mineral_id='+working_mineral_id+'&mode=link','tag_wrapper__'+working_tag_id, 'GET');
         working_tag_type = '';
         working_tag_id = '';
         working_mineral_id = '';
      }
   }
   
   var working_tag_id = '';
   var working_mineral_id = '';
   var working_tag_type = '';
   function toggleTag(field, data, tag_type, unique_id, status_field, tag_id, mode_delete) {
      // Check all forms 
      if(mode_delete) {
         tag_status = document.getElementById('hidden_tag_status');
         tag_status.innerHTML = '';
         // Check how many minerals exist with tag
         retrieveURL(baseurl + '/index.php?r=edit_tag&mode=get_num_minerals&tbl_data_tags_id=' + tag_id + '&tag_type=' + tag_type + '&mineral_id=' + unique_id, 'hidden_tag_status', 'GET');
         working_tag_id = tag_id;
         working_tag_type = tag_type;
         working_mineral_id = unique_id;
         setTimeout("checkTagStatus();","250");
      }
      else if(edit_mode) {
         // Entering edit mode - display edit block and change/edit tags
         edit_mode = false;
         // Replace div with edit form
         retrieveURL(baseurl + '/index.php?r=edit_tag&tbl_data_tags_id=' + tag_id + '&tag_type=' + tag_type + '&mineral_id=' + unique_id, 'tag_wrapper__' + tag_id, 'GET');
         // show_float('edit_tag__' + tag_id);
      }
      else {
         edit_mode = false;
         // submit change via ajax
         retrieveURL(baseurl + '/index.php?r=toggle_tag&id=' + unique_id + '&tag_type=' + tag_type + '&data=' + data, status_field, 'GET');
         theLink = document.getElementById(data);
         if(theLink.className == 'tag_selected') {
            theLink.className = 'tag_not_selected';
         }
         else {
            theLink.className = 'tag_selected';
         }
         
         // Set status to clear after 10 seconds
         clearElement = document.getElementById(status_field);
         clearMessage = "&nbsp;";
         setTimeout("clearElementInner();",'3000');
      }
   }


   function toggleTagSearch(field, data, tag_type, unique_id, status_field, tag_id, mode_delete) {
      theLink = document.getElementById(data);
      if(theLink.className == 'tag_not_selected') {
         theLink.className = 'tag_selected';
         // add to form include list
         addTag(data ,'tag','include');
      }
      else if(theLink.className == 'tag_selected') {
         theLink.className = 'tag_exclude_selected';
         addTag(data ,'tag','exclude');
         // add to exclude list
      }
      else {
         theLink.className = 'tag_not_selected';
         addTag(data ,'tag','none');
         // remove from both lists
      }
   }

   function addTag(data, field, mode) {

      obj_include = document.getElementById(field + "_include");
      obj_exclude = document.getElementById(field + "_exclude");

      switch(mode) {
         case 'include':
            // check if in exclude
            remove_from_obj(obj_exclude, data);
            // add to include
            if(obj_include.value == '') {
               obj_include.value = data;
            }
            else {
               obj_include.value += ', ' + data;
            }
         break;

         case 'exclude':
            // check if in include
            remove_from_obj(obj_include, data);
            // add to exclude
            if(obj_exclude.value == '') {
               obj_exclude.value = data;
            }
            else {
               obj_exclude.value += ', ' + data;
            }
         break;

         default:
            remove_from_obj(obj_include, data);
            remove_from_obj(obj_exclude, data);
            // check if in exclude
         break;
      }
   }

   function remove_from_obj(obj, value) {
      text_val = new String(obj.value);

      reg_exp = new RegExp('^'+value+'$');
      if(text_val.match(reg_exp)) {
         obj.value = text_val.replace(reg_exp,new String(''));
         return true;
      }
      reg_exp = new RegExp(value+',\\s');
      if(text_val.match(reg_exp)) {
         obj.value = text_val.replace(reg_exp,new String(''));
         return true;
      }
      reg_exp = new RegExp(',\\s'+value);
      if(text_val.match(reg_exp)) {
         obj.value = text_val.replace(reg_exp,new String(''));
         return true;
      }
      return false;
   }


   Array.prototype.in_array = function ( obj ) {
      var len = this.length;
      for ( var x = 0 ; x <= len ; x++ ) {
         if ( this[x] == obj ) return true;
      }
      return false;
   }

   var new_url = "";
   function checkPostType(formName, rruff_field, screen_field) {
      
      // if screen id or rruff id has changed....
      // alert($(formName).historical__rruff_id.value);
      if($(formName).field__rruff_id.value == "" && $(formName).field__screen_id.value == "") {
         alert('The RRUFF ID field and SCREEN ID field can not both be empty.');
         return false;
      }
      
      // alert($(formName).historical__rruff_id.value);
      if($(formName).historical__rruff_id.value != $(formName).field__rruff_id.value || $(formName).historical__screen_id.value != $(formName).field__screen_id.value) {
         // Load Overlay

         var overlay = '<div id="overlay"></div>';

         $('debug').innerHTML += overlay;

         new_url = baseurl + "/TS" + $(formName).sample_id.value + "/edit_record/search_uri=" + $(formName).search_uri.value;

         setTimeout("reloadPage();","2500");
         return true;
      }
      else {
         return true;
      }
   }

   function reloadPage() {
      document.location = new_url;
   }


function newPage(url) {
   document.location = url;
}

function highlightSearchRow(id,state) {
   var row_1 = id + "_1";

   if(state == "off") {
      if($(row_1).className == "") {
         $(row_1).style.background = "#fff";
      }
      else {
         $(row_1).style.background = "#e5ecf3";
      }
   }
   else {
      $(row_1).style.background = "#ffffdf";
   }
}
