/*************************************/
/** menu functions                  **/
/*************************************/

function popupWin(uri) {   
   var newwin = window.open(uri,'Popup','width=730,height=650,scrollbars=yes,resizable=yes');
   newwin.focus();
}

function popupSizedWin(uri,w,h) {   
   var newwin = window.open(uri,'Popup','width=' + w + ',height=' + h + ',scrollbars=no,resizable=yes');
   newwin.focus();
}


function do_print() 
{ 
    window.print();
}

/*************************************/
/** Entry functions                 **/
/*************************************/

function submitOnEnter(myform) 
{
  if (window.event && window.event.keyCode == 13) {
    myform.submit();
    return false;
  } else {
    return true;
  }
}

function selectOther(val,otherval,otherfield,id)
{
    var divtag = document.getElementById(id);
    if (val == otherval) {
        divtag.style.display = 'block';
        otherfield.value = '';
    } else {
        divtag.style.display = 'none';
        otherfield.value = val;
    }
}

function selectOtherInline(val,otherval,otherfield,id)
{
    var divtag = document.getElementById(id);
    if (val == otherval) {
        divtag.style.display = 'inline';
        otherfield.value = '';
    } else {
        divtag.style.display = 'none';
        otherfield.value = val;
    }
}

function selectForecast(val, otherval, id)
{
    var divtag = document.getElementById(id);
    if (val == otherval) {
        divtag.style.display = '';
    } else {
        divtag.style.display = 'none';
    }
}

function checkAll(frm, name, state)
{
    for (var i = 0; i < frm.elements.length; i++) {
        if ( (frm.elements[i].name == name) && (frm.elements[i].type == "checkbox") ) 
            frm.elements[i].checked = state;
    }
}


function displayBlock(id,showitem) {
    var ref = document.getElementById(id);


    // use empty string as Firefox expects 'table-row' and IE expects 'block'
    // empty string means: use default
    
    // see: http://jszen.blogspot.com/2004/07/table-rowsrevealed.html
    if (showitem) {
        if (ref != null)
            ref.style.display = 'inline';

    } else {
        if (ref != null)
            ref.style.display = 'none';
    }   
}

// set visibility property rather than display
function showHideBlock(id,showitem) {
    var ref = document.getElementById(id);

    if (showitem) {
        if (ref != null)
            ref.style.visibility = 'visible';

    } else {
        if (ref != null)
            ref.style.visibility = 'hidden';
    }   
}


// for choosing between basic and advanced user entry
// tag simple items 'simple', 'simple1', 'simple2', or 'simple3'
// tag advanced items 'advanced', 'advanced1', 'advanced2', or 'advanced3'
function displaySimpleOrAdvanced(val) {

    displayBlock( "simple", (val == 'simple') );
    displayBlock( "simple1", (val == 'simple') );
    displayBlock( "simple2", (val == 'simple') );
    displayBlock( "simple3", (val == 'simple') );

    displayBlock( "advanced", (val != 'simple') );
    displayBlock( "advanced1", (val != 'simple') );
    displayBlock( "advanced2", (val != 'simple') );
    displayBlock( "advanced3", (val != 'simple') );

}

function deleteConfirm(tpe,val,id,deleteid,actionpage)
{
    var result = confirm("Delete " + tpe + " '" + val +"'?  This will remove all associated data!");
    
    if (result) {
        deleteid.value = id;
        deleteid.form.action = actionpage;
        }
        
    return result;
}

function showWeek(prefix,quarter)
{
      if (quarter == "0") {
        displayBlock("empty_" + prefix,true); 
        displayBlock("row_" + prefix + "_1",false); 
        displayBlock("row_" + prefix + "_2",false); 
        displayBlock("row_" + prefix + "_3",false); 
        displayBlock("row_" + prefix + "_4",false);
      } else if (quarter == "1") {
        displayBlock("empty_" + prefix,false); 
        displayBlock("row_" + prefix + "_1",true); 
        displayBlock("row_" + prefix + "_2",false); 
        displayBlock("row_" + prefix + "_3",false); 
        displayBlock("row_" + prefix + "_4",false);
      } else if (quarter == "2") { 
        displayBlock("empty_" + prefix,false); 
        displayBlock("row_" + prefix + "_1",true); 
        displayBlock("row_" + prefix + "_2",true); 
        displayBlock("row_" + prefix + "_3",false); 
        displayBlock("row_" + prefix + "_4",false);
      } else if (quarter == "3") { 
        displayBlock("empty_" + prefix,false); 
        displayBlock("row_" + prefix + "_1",true); 
        displayBlock("row_" + prefix + "_2",true); 
        displayBlock("row_" + prefix + "_3",true); 
        displayBlock("row_" + prefix + "_4",false);
      } else if (quarter == "4") { 
        displayBlock("empty_" + prefix,false); 
        displayBlock("row_" + prefix + "_1",true); 
        displayBlock("row_" + prefix + "_2",true); 
        displayBlock("row_" + prefix + "_3",true); 
        displayBlock("row_" + prefix + "_4",true);
       }
  }
  
/*************************************/
/** Utility functions               **/
/*************************************/


// Return a reference to a given field
// This is helpful to use when a field name has a space in it.
//
//      frm -- a form reference
//      fldname -- name of the field

function getField(frm,fldName)
{
    for (var i=0; i < frm.elements.length; i++) {
        var elem = frm.elements[i];
        if (elem.name == fldName)
            return elem;
    }
}


// Sets the value of a field for a given form.
//
//      frm -- a form reference
//      fldname -- name of the field
//      value -- value to set the field to

function setField(frm, fldname, val)
{
    var fld = getField(frm,fldname);
    if (fld != null)
        fld.value = val;
    else
        alert("No such field " + fldname);
}

// Sets the value of a field for a given form.
//
//      frm -- a form reference
//      fldname -- name of the field
//      value -- value to set the field to

function copyField(frm, destfield, sourcefield)
{
    var fld_d = getField(frm,destfield);
    var fld_s = getField(frm,sourcefield);
    if ((fld_d != null) && (fld_s != null))
        fld_d.value = fld_s.value;
}




/*************************************/
/** List selection                  **/
/*************************************/
function selectAllRows(FormName,HiddenFieldName, RSFieldName, ItemFieldName)
{

   var HiddenField = eval('document.' + FormName + '.'+HiddenFieldName);
   var RSField = eval('document.' + FormName + '.'+RSFieldName);
   var ItemField = eval('document.' + FormName + '.'+ItemFieldName);

   removeAllRows(FormName,HiddenFieldName,RSFieldName,ItemFieldName);
   
   var hiddenValue;
   var items = ItemField.length;
   for (var itemIndex = 0; itemIndex < items; itemIndex++) {
   
       newoption = new Option(ItemField.options[itemIndex].text, ItemField.options[itemIndex].value, false, false);
       RSField.options[itemIndex] = newoption;

       if (itemIndex == 0)
         hiddenValue = ItemField.options[itemIndex].value;
       else
         hiddenValue = hiddenValue + "," + ItemField.options[itemIndex].value;
   }
   RSField.selectedIndex=-1;
   HiddenField.value = hiddenValue;        
}

function removeAllRows(FormName,HiddenFieldName, RSFieldName, ItemFieldName)
{
   var HiddenField = eval('document.' + FormName + '.'+HiddenFieldName);
   var RSField = eval('document.' + FormName + '.'+RSFieldName);
   var ItemField = eval('document.' + FormName + '.'+ItemFieldName);

   HiddenField.value = "";
   RSField.options.length = 0
   
}

function IncludeItems(FormName,HiddenFieldName, RSFieldName, ItemFieldName)
{

   var HiddenField = eval('document.' + FormName + '.'+HiddenFieldName);
   var RSField = eval('document.' + FormName + '.'+RSFieldName);
   var ItemField = eval('document.' + FormName + '.'+ItemFieldName);

   var FieldLength = RSField.length;
   var selectedItem = ItemField.selectedIndex;
   var selectedText = ItemField.options[selectedItem].text;
   var selectedValue = ItemField.options[selectedItem].value;
   var i;
   var hiddenFormValue;

   hiddenFormValue = '';

    // is the item already selected?
   for (i = 0; i < FieldLength; i++) {
        if  (selectedValue == RSField.options[i].value)
            return;
    }

   newoption = new Option(selectedText, selectedValue, false, false);
   RSField.options[FieldLength] = newoption;
   // ItemField.selectedIndex=-1;
   RSField.selectedIndex=-1;
   FieldLength++;
   for (i = 0; i < FieldLength-1; i++) {
       hiddenFormValue = hiddenFormValue + RSField.options[i].value + ',';
   }
   HiddenField.value = hiddenFormValue + RSField.options[i].value;

}

function RemoveItems(FormName,HiddenFieldName, RSFieldName) {

   var HiddenField = eval('document.' + FormName + '.'+HiddenFieldName);
   var RSField = eval('document.' + FormName + '.'+RSFieldName);
   var FieldLength;
   var count = 0;
   var hiddenFormValue;

   arrSelected = new Array();
   for (i = 0; i < RSField.length; i++) {
       if (RSField.options[i].selected) {
           arrSelected[count] = RSField.options[i].text;
       }
       count++;
   }

   var x;
   for (i = 0; i < RSField.length; i++) {
       for (x = 0; x < arrSelected.length; x++) {
           if (RSField.options[i].text == arrSelected[x]) {
               RSField.options[i] = null;
           }
       }
   }

   FieldLength = RSField.length;
   hiddenFormValue = '';
   FieldLength++;

   for (i = 0; i < RSField.length-1; i++) {
       hiddenFormValue = hiddenFormValue + RSField.options[i].value + ',';
   }
   if (RSField.length > 0) {
   HiddenField.value = hiddenFormValue + RSField.options[RSField.length-1].value;
   }
   else {HiddenField.value = '';}
}

function InitializeItems(FormName,HiddenFieldName, RSFieldName, ItemFieldName)
{

   var HiddenField = eval('document.' + FormName + '.'+HiddenFieldName);
   var RSField = eval('document.' + FormName + '.'+RSFieldName);
   var ItemField = eval('document.' + FormName + '.'+ItemFieldName);
   var FieldLength = RSField.length;
   var i;
   var hiddenFormValue;

   hiddenFormValue = '';

   for (i = 0; i < FieldLength; i++) {
       hiddenFormValue = hiddenFormValue + RSField.options[i].value + ',';
   }
   HiddenField.value = hiddenFormValue;
}



/*************************************/
/** HTTPRequest functions           **/
/*************************************/


var req;
function loadHTTPRequestDoc(url) {

    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("POST", url, true);
        req.send(null);

    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("POST", url, true);
            req.send();
        }
    }
    
}

function processReqChange() {

    // only if req shows "complete" (4 == complete).
    if (req.readyState == 4) {

        // only if status is "OK" (OK == 200).
        if (req.status == 200) {
          //alert(req.responseText);
          eval(req.responseText);
        } else {

            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}

function showErrors(message) {
    alert(message);
}


