 /* Copyright (C) 2006-2009 by Joseph McVerry - American Coders, Ltd.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */

function SegmentGroup(node)
{


this.segments=new Array();

if (node == null) return
//alert("inside sg");

 //alert(node.nodeName+" "+node.hasChildNodes());  
 
 
 
var sgs=node.getElementsByTagName("segment");

//alert(node.nodeName+" "+sgs.length+' length')

for (var i = 0; i < sgs.length; i++)

		 this.segments[i]=new Segment(sgs.item(i));


}

function sg_display()
{
  var i;
  var alength = this.segments.length
  var docmnt = ""
  docmnt+="<input type=hidden name=segChanged value=\"\">\n";
  for (i=0; i<alength; i++)
    {
      docmnt+= this.segments[i].display();
    }

  return docmnt;
}
function sg_clear()
{
  var i;
  var alength = this.segments.length
  for (i=0; i<alength; i++)
    {
       this.segments[i].clear();
    }

}
function sg_get(doPrev)
{
  var i;
  
  document.forms[0].nextButton.disabled=true
  var alength = this.segments.length
  var segChanged = "";
  var tsave= "";
  var allSave = "";
 // alert('start sg_get');
  var enteredFirst=false;
  for (i=0; i<alength; i++)
    {
      if (i==0)
        enteredFirst = this.segments[i].didUserEnterData();
      if (this.segments[i].didUserEnterData() == false && this.segments[i].required != 'M') 
        continue;
//      if (i>0 && enteredFirst == false &&   this.segments[i].didUserEnterData() == true)
//        {
//          alert("Enter data into primary segment fields if data is present in secondary segments")
//          document.forms[0].nextButton.disabled=false
//         return false;
//        }
      tsave = this.segments[i].get();
      
      if (tsave == false)
        {
        document.forms[0].nextButton.disabled=false
         return false;
         }
      else
      if (tsave != "") {
          segChanged += segChanged+";"+this.segments[i].id;
          allSave += tsave;   
          }
      else if (this.segments[i].required == 'M')
          segChanged += segChanged+";"+this.segments[i].id;
    }

 // alert(segChanged+"--"+tsave);
  var sending = "&action="+escape(theActionToTake);
  sending=sending+"&nextState="+escape(nextState)
  if (doPrev == true)
	  sending=sending+"&doPrev=1"

  

  sending=sending+"&timeStamp="+escape(timeStamp)
  sending=sending+"&segChanged="+escape(segChanged)

  sending=sending+"\n"+allSave


 //alert(sending);
/*
try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
   } catch (e) {
    alert("Permission UniversalBrowserRead denied."+e);
   }
   */
 // Obtain an XMLHttpRequest instance
  var req = newXMLHttpRequest();

  // Set the handler function to receive callback notifications
  // from the request object
  var handlerFunction = getReadyStateHandler(req, incoming);
  req.onreadystatechange = handlerFunction;

  // Open an HTTP  connection to the servlet
  // Third parameter specifies request is asynchronous.
  try{
 //alert('tatt going to '+theActionToTake)
 //alert('sending '+sending)
  if (theActionToTake == 'Start') {
     last = sending.lastIndexOf("=")
      //alert(prefix+"Servlet"+sending.substring(last+1,sending.length)+"/?"+sending);
      req.open("POST", prefix+"Servlet"+sending.substring(last+1,sending.length)+"/?"+sending, true);
      }
  else
  {
  
  req.open("POST", prefix+theActionToTake+"/?"+sending, true);
  }
  }
  catch (e)
    {
      alert(e)
    }

  // Specify that the body of the request contains form data
  req.setRequestHeader("Content-Type",
                       "application/x-www-form-urlencoded");

  // Send form encoded data stating that I want to add the
  // specified item to the cart.

  req.send(null);

  return true;
  
}

new SegmentGroup(null)

SegmentGroup.prototype.display = sg_display;
SegmentGroup.prototype.clear = sg_clear;
SegmentGroup.prototype.get = sg_get;



